es.po update by rafa, add ms win10 cygwin port, add pulseaudio, new config flags...
authorGood Guy <good1.2guy@gmail.com>
Tue, 28 Jan 2020 01:48:36 +0000 (18:48 -0700)
committerGood Guy <good1.2guy@gmail.com>
Tue, 28 Jan 2020 01:48:36 +0000 (18:48 -0700)
59 files changed:
cinelerra-5.1/blds/cygwin.bld [new file with mode: 0755]
cinelerra-5.1/blds/cygwin.patch [new file with mode: 0644]
cinelerra-5.1/cinelerra/Makefile
cinelerra-5.1/cinelerra/adeviceprefs.C
cinelerra-5.1/cinelerra/adeviceprefs.h
cinelerra-5.1/cinelerra/adeviceprefs.inc
cinelerra-5.1/cinelerra/androidcontrol.C
cinelerra-5.1/cinelerra/assetpopup.C
cinelerra-5.1/cinelerra/audioalsa.C
cinelerra-5.1/cinelerra/audioalsa.h
cinelerra-5.1/cinelerra/audioconfig.C
cinelerra-5.1/cinelerra/audioconfig.h
cinelerra-5.1/cinelerra/audiodevice.C
cinelerra-5.1/cinelerra/audiodevice.h
cinelerra-5.1/cinelerra/audiodevice.inc
cinelerra-5.1/cinelerra/audioodevice.C
cinelerra-5.1/cinelerra/audiopulse.C [new file with mode: 0644]
cinelerra-5.1/cinelerra/audiopulse.h [new file with mode: 0644]
cinelerra-5.1/cinelerra/audiopulse.inc [new file with mode: 0644]
cinelerra-5.1/cinelerra/cwindow.inc
cinelerra-5.1/cinelerra/editpopup.C
cinelerra-5.1/cinelerra/indexfile.C
cinelerra-5.1/cinelerra/mainsession.C
cinelerra-5.1/cinelerra/mwindow.C
cinelerra-5.1/cinelerra/playbackconfig.C
cinelerra-5.1/cinelerra/playbackconfig.h
cinelerra-5.1/cinelerra/recordconfig.C
cinelerra-5.1/cinelerra/recordconfig.h
cinelerra-5.1/cinelerra/samples.C
cinelerra-5.1/cinelerra/samples.h
cinelerra-5.1/cinelerra/shuttle.h
cinelerra-5.1/cinelerra/shuttle.inc
cinelerra-5.1/cinelerra/swindow.C
cinelerra-5.1/cinelerra/trackcanvas.C
cinelerra-5.1/cinelerra/vdeviceprefs.C
cinelerra-5.1/configure.ac
cinelerra-5.1/guicast/bcbitmap.C
cinelerra-5.1/guicast/bcbitmap.h
cinelerra-5.1/guicast/bcclipboard.C
cinelerra-5.1/guicast/bcsignals.C
cinelerra-5.1/guicast/bctextbox.C
cinelerra-5.1/guicast/bctextbox.h
cinelerra-5.1/guicast/bctrace.C
cinelerra-5.1/guicast/bcwindowbase.C
cinelerra-5.1/guicast/bcwindowbase.h
cinelerra-5.1/guicast/bcwindowdraw.C
cinelerra-5.1/guicast/bcwindowevents.C
cinelerra-5.1/guicast/cstrdup.h
cinelerra-5.1/guicast/thread.h
cinelerra-5.1/plugins/chromakey/chromakey.C
cinelerra-5.1/plugins/denoisefft/denoisefft.C
cinelerra-5.1/plugins/mandelcuda/.swp [deleted file]
cinelerra-5.1/plugins/nbodycuda/.swp [deleted file]
cinelerra-5.1/plugins/shapewipe/Makefile
cinelerra-5.1/plugins/titler/titler.C
cinelerra-5.1/plugins/titler/titler.h
cinelerra-5.1/plugins/titler/titlerwindow.C
cinelerra-5.1/po/es.po
cinelerra-5.1/thirdparty/src/libxcb.patch1 [new file with mode: 0755]

diff --git a/cinelerra-5.1/blds/cygwin.bld b/cinelerra-5.1/blds/cygwin.bld
new file mode 100755 (executable)
index 0000000..270c42c
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/bash
+( ./autogen.sh
+  CYGWIN=1 CFLAGS="-g -O2" ./configure --with-single-user -without-gl \
+    --disable-static-build --without-lv2 --disable-lame --disable-twolame \
+    --without-oss --without-alsa --without-firewire --without-dv --without-dvb \
+    --without-video4linux2 --without-xxf86vm --without-ladspa-build \
+    --without-libzmpeg --without-commercial --without-thirdparty \
+    --without-vaapi --without-vdpau --without-shuttle \
+    --without-x10tv --without-wintv --without-ladspa
+  make
+  make install ) 2>&1 | tee log
diff --git a/cinelerra-5.1/blds/cygwin.patch b/cinelerra-5.1/blds/cygwin.patch
new file mode 100644 (file)
index 0000000..a984a7f
--- /dev/null
@@ -0,0 +1,212 @@
+diff --git a/cinelerra-5.1/cinelerra/Makefile b/cinelerra-5.1/cinelerra/Makefile
+index 645b273..e482dcd 100644
+--- a/cinelerra-5.1/cinelerra/Makefile
++++ b/cinelerra-5.1/cinelerra/Makefile
+@@ -428,13 +428,28 @@ LIBS := $(LIBRARIES)
+ ifneq ($(WANT_CIN_3RDPARTY),no)
+ LIBS += $(libraries)
+ else
++LIBS += -Wl,--export-all-symbols -g
++LIBS += -Wl,--out-implib,$(OBJDIR)/lib$(WANT_CIN).exe.a
++LIBS += -L$(FF_DIR)/lib
++LIBS += -Wl,-rpath-link=:$(FF_DIR)/lib
++LIBS += -Wl,--as-needed -Wl,--warn-common
++LIBS += -lavdevice
++LIBS += -lavfilter
++LIBS += -lavformat
++LIBS += -lavcodec
++LIBS += -lswresample
++LIBS += -lswscale
++LIBS += -lavutil
++
++LIBS += -lvpx -lwebp -lwebpmux
++LIBS += -ljpeg -lFLAC -lgif -lsndfile -ltiff
++
++LIBS += -lsecur32 -lole32 -luser32 -luser32 -lbcrypt -lshell32
+ LIBS += -lpthread -lm -lbz2 -llzma -lz -lpng -luuid
+-LIBS += -lX11 -lXau -lXdmcp -lXext -lXfixes -lXv -lXinerama
++LIBS += -lX11 -lXau -lXdmcp -lXext -lXfixes -lXinerama
++LIBS += -lintl -liconv
+ LIBS += -lfontconfig -lfreetype
+-LIBS += -lavcodec -lavdevice -lavfilter -lavformat -lavresample -lavutil
+-LIBS += -lswresample -lswscale
+-LIBS += -lvpx -lwebp -lwebpmux
+ LIBS += $(if $(filter fftw,$(static_pkgs)), -lfftw3)
+ LIBS += $(if $(filter flac,$(static_pkgs)), -lFLAC)
+@@ -454,7 +470,7 @@ LIBS += $(if $(filter x265,$(static_pkgs)), -lx265)
+ LIBS += $(if $(filter libvpx,$(static_pkgs)), -lvpx)
+ ifneq ($(WANT_GL),no)
+-LIBS += -lGL -lGLU -lGLX
++LIBS += -lGL -lGLU
+ endif
+ ifneq ($(WANT_XFT),no)
+ LIBS += -lXft
+@@ -548,7 +564,7 @@ CFLAGS += -DUSE_ALPHA
+ else
+-LDFLAGS1 = -Wl,-export-dynamic -g
++LDFLAGS1 = -Wl,-export-all-symbols -g
+ LDFLAGS2 = $(LDFLAGS)
+ LINKER = $(CXX) -o $(OUTPUT)
+@@ -566,7 +582,7 @@ all:       $(OUTPUT) $(CUTADS) $(BDWRITE) $(LV2UI)
+ $(OUTPUT): $(OBJS) $(THEME_DATA) $(DCRAW) $(LIBRARIES)
+       $(LINKER) `cat $(OBJDIR)/objs`
+       $(if $(findstring -g,$(CFLAGS)),objcopy --only-keep-debug $(OUTPUT) $(OUTPUT_G))
+-      $(if $(findstring -ggdb,$(CFLAGS)),,strip $(OUTPUT))
++      #$(if $(findstring -ggdb,$(CFLAGS)),,strip $(OUTPUT))
+       ln -f -s ../bin/$(WANT_CIN) ci
+ ifneq ($(WANT_COMMERCIAL),no)
+@@ -574,7 +590,7 @@ $(CUTADS): $(CUTOBJS) $(CUTLIBS) $(LIBRARIES)
+       @echo g++ -o $@ $(CUTOBJS)
+       @g++ $(CFLAGS) -pthread -o $@ $(CUTOBJS) $(CUTLIBS) $(LIBS)
+       $(if $(findstring -g,$(CFLAGS)),objcopy --only-keep-debug $(CUTADS) $(CUTADS).debuginfo)
+-      $(if $(findstring -ggdb,$(CFLAGS)),,strip $(CUTADS))
++      #$(if $(findstring -ggdb,$(CFLAGS)),,strip $(CUTADS))
+ install-cutads:
+       cp -av $(OBJDIR)/cutads $(BINDIR)/.
+@@ -586,7 +602,7 @@ $(BDWRITE):        $(BDWOBJS) $(LIBRARIES)
+       @echo g++ -o $@ $(BDWOBJS)
+       @g++ $(CFLAGS) -pthread -o $@ $(BDWOBJS) $(LIBS)
+       $(if $(findstring -g,$(CFLAGS)),objcopy --only-keep-debug $(BDWRITE) $(BDWRITE).debuginfo)
+-      $(if $(findstring -ggdb,$(CFLAGS)),,strip $(BDWRITE))
++      #$(if $(findstring -ggdb,$(CFLAGS)),,strip $(BDWRITE))
+ install-bdwrite:
+       cp -av $(OBJDIR)/bdwrite $(BINDIR)/.
+@@ -629,7 +645,7 @@ $(OBJDIR)/lv2ui: $(LV2OBJS)
+       @echo $(CXX) \`cat $(OBJDIR)/c_flags\` $^ -o $@
+       @$(CXX) `cat $(OBJDIR)/c_flags` $^ -o $@ $(LIBS) $(GTK2_LIBS)
+       $(if $(findstring -g,$(CFLAGS)),objcopy --only-keep-debug $(LV2UI) $(LV2UI).debuginfo)
+-      $(if $(findstring -ggdb,$(CFLAGS)),,strip $(LV2UI))
++      #$(if $(findstring -ggdb,$(CFLAGS)),,strip $(LV2UI))
+ .PHONY:       lv2ui
+ lv2ui:        $(LV2UI)
+diff --git a/cinelerra-5.1/db/tdb.h b/cinelerra-5.1/db/tdb.h
+index 8ee8800..9a17091 100644
+--- a/cinelerra-5.1/db/tdb.h
++++ b/cinelerra-5.1/db/tdb.h
+@@ -32,7 +32,7 @@ inline void operator delete[](void *t,size_t n) { free(t); }
+ #endif
+ #define ZMEDIA
+-#define ZFUTEX
++//#define ZFUTEX
+ #ifdef ZFUTEX
+ #include <unistd.h>
+ #include <endian.h>
+diff --git a/cinelerra-5.1/guicast/bcresources.C b/cinelerra-5.1/guicast/bcresources.C
+index 1d52855..fdab491 100644
+--- a/cinelerra-5.1/guicast/bcresources.C
++++ b/cinelerra-5.1/guicast/bcresources.C
+@@ -367,8 +367,8 @@ BC_Resources::BC_Resources(float x_scale, float y_scale)
+       BC_WindowBase::resources = this;
+       synchronous = 0;
+       vframe_shm = 0;
+-      use_shm = -1;
+-      shm_reply = 1;
++      use_shm = 0;
++      shm_reply = 0;
+       if( x_scale <= 0 ) x_scale = 1;
+       if( y_scale <= 0 ) y_scale = x_scale;
+diff --git a/cinelerra-5.1/guicast/filesystem.h b/cinelerra-5.1/guicast/filesystem.h
+index c976135..5613702 100644
+--- a/cinelerra-5.1/guicast/filesystem.h
++++ b/cinelerra-5.1/guicast/filesystem.h
+@@ -26,6 +26,9 @@
+ #include "bcwindowbase.inc"
+ #include "sizes.h"
++#define dirent64 dirent
++#define readdir64 readdir
++
+ class FileItem
+ {
+ public:
+diff --git a/cinelerra-5.1/plugin_config b/cinelerra-5.1/plugin_config
+index 56f4351..f7149bb 100644
+--- a/cinelerra-5.1/plugin_config
++++ b/cinelerra-5.1/plugin_config
+@@ -4,12 +4,21 @@ CFLAGS += -I../ -I$(CINELERRA) -I$(GUICAST) -I../colors -fPIC
+ CFLAGS += $(static_incs)
+ LFLAGS += $(static_libs)
+ LFLAGS += $(LDFLAGS)
++
++LFLAGS +=  -Wl,$(CINELERRA)/$(OBJDIR)/libcin.exe.a
++LFLAGS += -lintl -liconv
++ifneq ($(WANT_GL),no)
++LFLAGS += -lGL -lGLU
++endif
++
+ LDLINKER ?= $(CXX) -shared
+ $(shell mkdir -p $(OBJDIR))
++#SFX=plugin
++SFX=dll
+ PLUGIN_DIR := $(BINDIR)/plugins
+ OUTPUT_DIR = $(PLUGIN_DIR)/$($(PLUGIN))
+-OUTPUT = $(OUTPUT_DIR)/$(PLUGIN).plugin
++OUTPUT = $(OUTPUT_DIR)/$(PLUGIN).$(SFX)
+ OUTPUT_G = $(OBJDIR)/$(PLUGIN).debuginfo
+ $(shell echo $(CFLAGS) > $(OBJDIR)/c_flags)
+@@ -20,16 +29,16 @@ ifeq ($(OUTPUT_THEME),)
+ $(OUTPUT): $(OBJS) $(OUTPUT_DIR) $(OUTPUT_BINS)
+       $(LDLINKER) -o $(OUTPUT) $(OBJS) $(OUTPUT_BINS) `cat $(OBJDIR)/l_flags`
+       $(if $(findstring -g,$(CFLAGS)),objcopy --only-keep-debug $(OUTPUT) $(OUTPUT_G))
+-      $(if $(findstring -ggdb,$(CFLAGS)),,strip $(OUTPUT))
++      #$(if $(findstring -ggdb,$(CFLAGS)),,strip $(OUTPUT))
+ else
+ THEME_DATA = $(OBJDIR)/$(PLUGIN)_data.o
+ $(OUTPUT_THEME): $(OBJS) $(OUTPUT_DIR) $(THEME_DATA)
+-      $(LDLINKER) -o $(OUTPUT_THEME) $(OBJS) $(THEME_DATA) $(LDFLAGS)
++      $(LDLINKER) -o $(OUTPUT_THEME) $(OBJS) $(THEME_DATA) `cat $(OBJDIR)/l_flags`
+       $(if $(findstring -g,$(CFLAGS)),objcopy --only-keep-debug $(OUTPUT_THEME) $(OUTPUT_G))
+-      $(if $(findstring -ggdb,$(CFLAGS)),,strip $(OUTPUT_THEME))
++      #$(if $(findstring -ggdb,$(CFLAGS)),,strip $(OUTPUT_THEME))
+ $(THEME_DATA):
+       cd $(OBJDIR) && \
+diff --git a/cinelerra-5.1/plugins/Makefile b/cinelerra-5.1/plugins/Makefile
+index 22bc7dd..6404536 100644
+--- a/cinelerra-5.1/plugins/Makefile
++++ b/cinelerra-5.1/plugins/Makefile
+@@ -36,7 +36,6 @@ DIRS = $(OPENCV_OBJS) \
+       brightness \
+       burn \
+       C41 \
+-      cdripper \
+       chorus \
+       chromakey \
+       chromakeyhsv \
+@@ -176,6 +175,8 @@ DIRS = $(OPENCV_OBJS) \
+ #     denoisemjpeg \
+ # duplicate
+ #     vocoder \
++# not in bsd or win
++#     cdripper \
+ PLUGIN_DIR = $(BINDIR)/plugins
+ DATA = $(PLUGIN_DIR)/fonts $(PLUGIN_DIR)/shapes
+diff --git a/cinelerra-5.1/guicast/bcsignals.C b/cinelerra-5.1/guicast/bcsignals.C
+--- guicast/bcsignals.C        2020-01-27 07:27:45.332623800 -0700
++++ guicast/bcsignals.C        2020-01-27 07:28:11.443049600 -0700
+@@ -44,6 +44,7 @@
+ #include <sys/prctl.h>
+ #endif
+ #include <sys/types.h>
++#include <sys/wait.h>
+ BC_Signals* BC_Signals::global_signals = 0;
+ static int signal_done = 0;
index 7e69a50356b4dab42c3807de732a365155eed8a2..645b273c4914d735b59a468c9808140a0d01eff1 100644 (file)
@@ -64,6 +64,7 @@ OBJS := $(OVERLAYS) \
        $(OBJDIR)/audioidevice.o \
        $(OBJDIR)/audioodevice.o \
        $(OBJDIR)/audiooss.o \
        $(OBJDIR)/audioidevice.o \
        $(OBJDIR)/audioodevice.o \
        $(OBJDIR)/audiooss.o \
+       $(OBJDIR)/audiopulse.o \
        $(OBJDIR)/audiov4l2mpeg.o \
        $(OBJDIR)/autoconf.o \
        $(OBJDIR)/automation.o \
        $(OBJDIR)/audiov4l2mpeg.o \
        $(OBJDIR)/autoconf.o \
        $(OBJDIR)/automation.o \
@@ -461,6 +462,9 @@ endif
 ifneq ($(WANT_ALSA),no)
 LIBS += -lasound
 endif
 ifneq ($(WANT_ALSA),no)
 LIBS += -lasound
 endif
+ifneq ($(WANT_PULSE),no)
+LIBS += -lpulse-simple -lpulse
+endif
 ifneq ($(WANT_OPENEXR),no)
 LIBS += -lIex -lIexMath -lIlmImf -lIlmImfUtil
 endif
 ifneq ($(WANT_OPENEXR),no)
 LIBS += -lIex -lIexMath -lIlmImf -lIlmImfUtil
 endif
index 60c9126978395ee6eb8e1a438bb577699cca054e..ddc75b2f0d744e7f46b6dde35b7218ef68b97d09 100644 (file)
@@ -22,6 +22,7 @@
 #include "adeviceprefs.h"
 #include "audioalsa.h"
 #include "audiodevice.inc"
 #include "adeviceprefs.h"
 #include "audioalsa.h"
 #include "audiodevice.inc"
+#include "audiopulse.h"
 #include "bcsignals.h"
 #include "bitspopup.h"
 #include "edl.h"
 #include "bcsignals.h"
 #include "bitspopup.h"
 #include "edl.h"
@@ -91,7 +92,7 @@ void ADevicePrefs::reset()
        cine_path = 0;
        server_title = 0;
        port_title = 0;
        cine_path = 0;
        server_title = 0;
        port_title = 0;
-       esound_port = 0;
+       port = 0;
 }
 
 int ADevicePrefs::initialize(int creation)
 }
 
 int ADevicePrefs::initialize(int creation)
@@ -126,6 +127,9 @@ int ADevicePrefs::initialize(int creation)
        case AUDIO_ALSA:
                create_alsa_objs();
                break;
        case AUDIO_ALSA:
                create_alsa_objs();
                break;
+       case AUDIO_PULSE:
+               create_pulse_objs();
+               break;
        case AUDIO_ESOUND:
                create_esound_objs();
                break;
        case AUDIO_ESOUND:
                create_esound_objs();
                break;
@@ -167,6 +171,9 @@ int ADevicePrefs::delete_objects()
        case AUDIO_ALSA:
                delete_alsa_objs();
                break;
        case AUDIO_ALSA:
                delete_alsa_objs();
                break;
+       case AUDIO_PULSE:
+               delete_pulse_objs();
+               break;
        case AUDIO_ESOUND:
                delete_esound_objs();
                break;
        case AUDIO_ESOUND:
                delete_esound_objs();
                break;
@@ -205,9 +212,9 @@ int ADevicePrefs::delete_oss_objs()
 int ADevicePrefs::delete_esound_objs()
 {
        delete server_title;
 int ADevicePrefs::delete_esound_objs()
 {
        delete server_title;
+       delete server;
        delete port_title;
        delete port_title;
-       delete esound_server;
-       delete esound_port;
+       delete port;
        return 0;
 }
 
        return 0;
 }
 
@@ -246,6 +253,15 @@ int ADevicePrefs::delete_alsa_objs()
        return 0;
 }
 
        return 0;
 }
 
+int ADevicePrefs::delete_pulse_objs()
+{
+#ifdef HAVE_PULSE
+       delete server_title;
+       delete server;
+#endif
+       return 0;
+}
+
 int ADevicePrefs::delete_dvb_objs()
 {
        delete dvb_adapter_title;
 int ADevicePrefs::delete_dvb_objs()
 {
        delete dvb_adapter_title;
@@ -410,9 +426,7 @@ int ADevicePrefs::create_alsa_objs()
                                _("Stop playback locks up."));
                dialog->add_subwindow(alsa_workaround);
        }
                                _("Stop playback locks up."));
                dialog->add_subwindow(alsa_workaround);
        }
-
 #endif
 #endif
-
        return 0;
 }
 
        return 0;
 }
 
@@ -437,8 +451,8 @@ int ADevicePrefs::create_esound_objs()
        server_title = new BC_Title(x1, y, _("Server:"),
                        MEDIUMFONT, resources->text_default);
        dialog->add_subwindow(server_title);
        server_title = new BC_Title(x1, y, _("Server:"),
                        MEDIUMFONT, resources->text_default);
        dialog->add_subwindow(server_title);
-       esound_server = new ADeviceTextBox(x1, y + yS(20), output_char);
-       dialog->add_subwindow(esound_server);
+       server = new ADeviceTextBox(x1, y + yS(20), output_char);
+       dialog->add_subwindow(server);
 
        switch(mode) {
        case MODEPLAY:
 
        switch(mode) {
        case MODEPLAY:
@@ -451,12 +465,12 @@ int ADevicePrefs::create_esound_objs()
                output_int = &out_config->esound_out_port;
                break;
        }
                output_int = &out_config->esound_out_port;
                break;
        }
-       x1 += esound_server->get_w() + xS(5);
+       x1 += server->get_w() + xS(5);
        port_title = new BC_Title(x1, y, _("Port:"),
                        MEDIUMFONT, resources->text_default);
        dialog->add_subwindow(port_title);
        port_title = new BC_Title(x1, y, _("Port:"),
                        MEDIUMFONT, resources->text_default);
        dialog->add_subwindow(port_title);
-       esound_port = new ADeviceIntBox(x1, y + yS(20), output_int);
-       dialog->add_subwindow(esound_port);
+       port = new ADeviceIntBox(x1, y + yS(20), output_int);
+       dialog->add_subwindow(port);
        return 0;
 }
 
        return 0;
 }
 
@@ -615,6 +629,29 @@ int ADevicePrefs::create_v4l2mpeg_objs()
 }
 
 
 }
 
 
+int ADevicePrefs::create_pulse_objs()
+{
+#ifdef HAVE_PULSE
+       char *output_char = 0;
+       switch(mode) {
+       case MODEPLAY:
+               output_char = out_config->pulse_out_server;
+               break;
+       case MODERECORD:
+               output_char = in_config->pulse_in_server;
+               break;
+       }
+       int x1 = x, y1 = y;
+       x1 += menu->get_w() + xS(5);
+       dialog->add_subwindow(server_title = new BC_Title(x1, y1,
+               _("Server (blank for default):")));
+       y1 += server_title->get_h() + yS(5);
+       dialog->add_subwindow(server = new ADeviceTextBox(x1, y1, output_char));
+#endif
+       return 0;
+}
+
+
 ADriverMenu::ADriverMenu(int x, int y, ADevicePrefs *device_prefs,
        int do_input, int *output)
  : BC_PopupMenu(x, y, xS(125), adriver_to_string(*output), 1)
 ADriverMenu::ADriverMenu(int x, int y, ADevicePrefs *device_prefs,
        int do_input, int *output)
  : BC_PopupMenu(x, y, xS(125), adriver_to_string(*output), 1)
@@ -656,6 +693,9 @@ void ADriverMenu::create_objects()
 #ifdef HAVE_VIDEO4LINUX2
        if(do_input) add_item(new ADriverItem(this, AUDIO_V4L2MPEG_TITLE, AUDIO_V4L2MPEG));
 #endif
 #ifdef HAVE_VIDEO4LINUX2
        if(do_input) add_item(new ADriverItem(this, AUDIO_V4L2MPEG_TITLE, AUDIO_V4L2MPEG));
 #endif
+#ifdef HAVE_PULSE
+       add_item(new ADriverItem(this, AUDIO_PULSE_TITLE, AUDIO_PULSE));
+#endif
 }
 
 char* ADriverMenu::adriver_to_string(int driver)
 }
 
 char* ADriverMenu::adriver_to_string(int driver)
@@ -670,6 +710,9 @@ char* ADriverMenu::adriver_to_string(int driver)
        case AUDIO_ESOUND:
                sprintf(string, AUDIO_ESOUND_TITLE);
                break;
        case AUDIO_ESOUND:
                sprintf(string, AUDIO_ESOUND_TITLE);
                break;
+       case AUDIO_PULSE:
+               sprintf(string, AUDIO_PULSE_TITLE);
+               break;
        case AUDIO_NAS:
                sprintf(string, AUDIO_NAS_TITLE);
                break;
        case AUDIO_NAS:
                sprintf(string, AUDIO_NAS_TITLE);
                break;
index ebe5051ff20a69aca3490918a01620093c429a36..e7a480afbae229a434fd83b9dba0901cfd5136b0 100644 (file)
 class OSSEnable;
 class ALSADevice;
 
 class OSSEnable;
 class ALSADevice;
 
+#include "adeviceprefs.inc"
 #include "bitspopup.inc"
 #include "guicast.h"
 #include "playbackconfig.inc"
 #include "preferencesthread.inc"
 #include "recordconfig.inc"
 
 #include "bitspopup.inc"
 #include "guicast.h"
 #include "playbackconfig.inc"
 #include "preferencesthread.inc"
 #include "recordconfig.inc"
 
-class ADriverMenu;
-class ADeviceTextBox;
-class ADeviceIntBox;
-class ADeviceTumbleBox;
-
 class ADevicePrefs
 {
 public:
 class ADevicePrefs
 {
 public:
@@ -74,6 +70,7 @@ private:
        int create_cine_objs();
        int create_dvb_objs();
        int create_v4l2mpeg_objs();
        int create_cine_objs();
        int create_dvb_objs();
        int create_v4l2mpeg_objs();
+       int create_pulse_objs();
 
        int delete_oss_objs();
        int delete_esound_objs();
 
        int delete_oss_objs();
        int delete_esound_objs();
@@ -81,6 +78,7 @@ private:
        int delete_alsa_objs();
        int delete_dvb_objs();
        int delete_v4l2mpeg_objs();
        int delete_alsa_objs();
        int delete_dvb_objs();
        int delete_v4l2mpeg_objs();
+       int delete_pulse_objs();
 
 // The output config resolved from playback strategy and render engine.
        AudioOutConfig *out_config;
 
 // The output config resolved from playback strategy and render engine.
        AudioOutConfig *out_config;
@@ -99,8 +97,8 @@ private:
        OSSEnable *oss_enable[MAXDEVICES];
        ADeviceTextBox *oss_path[MAXDEVICES];
        BitsPopup *oss_bits;
        OSSEnable *oss_enable[MAXDEVICES];
        ADeviceTextBox *oss_path[MAXDEVICES];
        BitsPopup *oss_bits;
-       ADeviceTextBox *esound_server;
-       ADeviceIntBox *esound_port;
+       ADeviceTextBox *server;
+       ADeviceIntBox *port;
        ADeviceIntBox *firewire_port;
        ADeviceIntBox *firewire_channel;
        ADeviceTextBox *firewire_path;
        ADeviceIntBox *firewire_port;
        ADeviceIntBox *firewire_channel;
        ADeviceTextBox *firewire_path;
index 0c8e11032f508c08ead314c09368aaf0877cfed3..f9c71f66e35818baca4368ceaa4be2db772449fd 100644 (file)
 #define ADEVICEPREFS_INC
 
 class ADevicePrefs;
 #define ADEVICEPREFS_INC
 
 class ADevicePrefs;
+
 #ifndef MODEPLAY
 #define MODEPLAY 0
 #define MODERECORD 1
 #define MODEDUPLEX 2
 #endif
 
 #ifndef MODEPLAY
 #define MODEPLAY 0
 #define MODERECORD 1
 #define MODEDUPLEX 2
 #endif
 
+class ADriverMenu;
+class ADriverItem;
+class OSSEnable;
+class ADeviceTextBox;
+class ADeviceIntBox;
+class ADeviceTumbleBox;
+class ALSADevice;
 
 #endif
 
 #endif
index 61e43c97d4294db04b07091a64dc7985fb536c43..f26aed40461681da1664ea3fcf2322f2572be97b 100644 (file)
@@ -47,6 +47,9 @@ AndroidControl::AndroidControl(MWindowGUI *mwindow_gui)
 {
        this->mwindow_gui = mwindow_gui;
        Thread::start();
 {
        this->mwindow_gui = mwindow_gui;
        Thread::start();
+       done = -1;
+       sockfd = -1;
+       msg = 0;
 }
 
 bool AndroidControl::is_msg(const char *cp)
 }
 
 bool AndroidControl::is_msg(const char *cp)
index ba828166fa48e285de9f62f922c55a863a94007b..56832ca9100e8e994cbf8e0f5446a2b0783b588e 100644 (file)
@@ -420,7 +420,7 @@ int AssetPopupInsertMixer::handle_event()
 }
 
 AssetPopupPaste::AssetPopupPaste(MWindow *mwindow, AssetPopup *popup)
 }
 
 AssetPopupPaste::AssetPopupPaste(MWindow *mwindow, AssetPopup *popup)
- : BC_MenuItem(_("Paste"))
+ : BC_MenuItem(C_("Paste"))
 {
        this->mwindow = mwindow;
        this->popup = popup;
 {
        this->mwindow = mwindow;
        this->popup = popup;
index e5c9fdfbd1b7ca15271cddffbdc5a46e78d89955..4a128a74a3586a20ca3ff8ce60ea60d5aa6499b7 100644 (file)
@@ -145,64 +145,6 @@ void AudioALSA::list_devices(ArrayList<char*> *names, ArrayList<char*> *pcm_name
 
                snd_ctl_close(handle);
        }
 
                snd_ctl_close(handle);
        }
-
-#ifdef HAVE_PACTL
-// attempt to add pulseaudio "monitor" devices
-//  run: pactl list <sources>|<sinks>
-//   scan output for <Source/Sink> #n,  Name: <device>
-//   build alsa device config and add to alsa snd_config
-
-       const char *arg = 0;
-       switch( mode ) {
-               case MODERECORD:
-                       arg = "source";
-                       break;
-               case MODEPLAY:
-                       arg = "sink";
-                       break;
-       }
-       FILE *pactl = 0;
-       char line[BCTEXTLEN];
-       if( arg ) {
-               sprintf(line, "LANGUAGE=en_US.UTF-8 pactl list %ss", arg);
-               pactl = popen(line,"r");
-       }
-       if( pactl ) {
-               snd_config_update();
-               char name[BCTEXTLEN], pa_name[BCTEXTLEN], device[BCTEXTLEN];
-               name[0] = pa_name[0] = device[0] = 0;
-               int arg_len = strlen(arg);
-               while( fgets(line, sizeof(line), pactl) ) {
-                       if( !strncasecmp(line, arg, arg_len) ) {
-                               char *sp = name, *id = pa_name;
-                               for( char *cp=line; *cp && *cp!='\n'; *sp++=*cp++ )
-                                       *id++ = (*cp>='A' && *cp<='Z') ||
-                                               (*cp>='a' && *cp<='z') ||
-                                               (*cp>='0' && *cp<='9') ? *cp : '_';
-                               *sp++ = 0;  *id = 0;
-                               if( names )
-                                       names->append(cstrdup(name));
-                               continue;
-                       }
-                       if( sscanf(line, " Name: %s", device) != 1 ) continue;
-                       int len = strlen(pa_name);
-                       if( pcm_names )
-                               pcm_names->append(cstrdup(pa_name));
-                       char alsa_config[BCTEXTLEN];
-                       len = snprintf(alsa_config, sizeof(alsa_config),
-                               "pcm.!%s {\n type pulse\n device %s\n}\n"
-                               "ctl.!%s {\n type pulse\n device %s\n}\n",
-                               pa_name, device, pa_name, device);
-                       FILE *fp = fmemopen(alsa_config,len,"r");
-                       snd_input_t *inp;
-                       snd_input_stdio_attach(&inp, fp, 1);
-                       snd_config_load(snd_config, inp);
-                       name[0] = pa_name[0] = device[0] = 0;
-                       snd_input_close(inp);
-               }
-               pclose(pactl);
-       }
-#endif
 }
 
 void AudioALSA::translate_name(char *output, char *input, int mode)
 }
 
 void AudioALSA::translate_name(char *output, char *input, int mode)
@@ -215,6 +157,9 @@ void AudioALSA::translate_name(char *output, char *input, int mode)
 
        list_devices(&titles, &pcm_titles, mode);
 
 
        list_devices(&titles, &pcm_titles, mode);
 
+// attempt to add pulseaudio "monitor" devices
+       add_pulse_devices(mode, &titles, &pcm_titles);
+
        sprintf(output, "default");
        for(int i = 0; i < titles.total; i++)
        {
        sprintf(output, "default");
        for(int i = 0; i < titles.total; i++)
        {
@@ -676,4 +621,64 @@ snd_pcm_t* AudioALSA::get_input()
        return dsp_in;
 }
 
        return dsp_in;
 }
 
+void AudioALSA::add_pulse_devices(int mode,
+               ArrayList<char*> *names, ArrayList<char*> *pcm_names)
+{
+#ifdef HAVE_PACTL
+//  run: pactl list <sources>|<sinks>
+//   scan output for <Source/Sink> #n,  Name: <device>
+//   build alsa device config and add to alsa snd_config
+       const char *arg = 0;
+       switch( mode ) {
+       case MODERECORD:
+               arg = "source";
+               break;
+       case MODEPLAY:
+               arg = "sink";
+               break;
+       }
+       FILE *pactl = 0;
+       char line[BCTEXTLEN];
+       if( arg ) {
+               sprintf(line, "LANGUAGE=en_US.UTF-8 pactl list %ss", arg);
+               pactl = popen(line,"r");
+       }
+       if( pactl ) {
+               snd_config_update();
+               char name[BCTEXTLEN], pa_name[BCTEXTLEN], device[BCTEXTLEN];
+               name[0] = pa_name[0] = device[0] = 0;
+               int arg_len = strlen(arg);
+               while( fgets(line, sizeof(line), pactl) ) {
+                       if( !strncasecmp(line, arg, arg_len) ) {
+                               char *sp = name, *id = pa_name;
+                               for( char *cp=line; *cp && *cp!='\n'; *sp++=*cp++ )
+                                       *id++ = (*cp>='A' && *cp<='Z') ||
+                                               (*cp>='a' && *cp<='z') ||
+                                               (*cp>='0' && *cp<='9') ? *cp : '_';
+                               *sp++ = 0;  *id = 0;
+                               if( names )
+                                       names->append(cstrdup(name));
+                               continue;
+                       }
+                       if( sscanf(line, " Name: %s", device) != 1 ) continue;
+                       int len = strlen(pa_name);
+                       if( pcm_names )
+                               pcm_names->append(cstrdup(pa_name));
+                       char alsa_config[BCTEXTLEN];
+                       len = snprintf(alsa_config, sizeof(alsa_config),
+                               "pcm.!%s {\n type pulse\n device %s\n}\n"
+                               "ctl.!%s {\n type pulse\n device %s\n}\n",
+                               pa_name, device, pa_name, device);
+                       FILE *fp = fmemopen(alsa_config,len,"r");
+                       snd_input_t *inp;
+                       snd_input_stdio_attach(&inp, fp, 1);
+                       snd_config_load(snd_config, inp);
+                       name[0] = pa_name[0] = device[0] = 0;
+                       snd_input_close(inp);
+               }
+               pclose(pactl);
+       }
+#endif
+}
+
 #endif
 #endif
index 78d08319b5f4e1746b87ed1f60a3b4a5296effe1..5b919a21575c7c56557440f19fa06ed96b4aaf08 100644 (file)
@@ -49,7 +49,8 @@ public:
        int flush_device();
        int interrupt_playback();
        int stop_output();
        int flush_device();
        int interrupt_playback();
        int stop_output();
-
+       static void add_pulse_devices(int mode,
+               ArrayList<char*> *name, ArrayList<char*> *pcm_name);
 private:
        int close_output();
        void translate_name(char *output, char *input, int mode);
 private:
        int close_output();
        void translate_name(char *output, char *input, int mode);
index 44c5eabe168bf0b1637f6a3760bbd75a49ad62b8..33e4ce1977d6904ac5286c4fc54bb9994841de1f 100644 (file)
@@ -37,6 +37,7 @@ AudioConfig::AudioConfig()
        oss_in_channels = 2;
        oss_in_bits = 16;
        strcpy(esound_in_server, "");
        oss_in_channels = 2;
        oss_in_bits = 16;
        strcpy(esound_in_server, "");
+       strpcy(pulse_in_server, "");
        esound_in_port = 0;
 
        audio_out_driver = AUDIO_ALSA;
        esound_in_port = 0;
 
        audio_out_driver = AUDIO_ALSA;
@@ -44,6 +45,7 @@ AudioConfig::AudioConfig()
        oss_out_channels = 2;
        oss_out_bits = 16;
        strpcy(esound_out_server, "");
        oss_out_channels = 2;
        oss_out_bits = 16;
        strpcy(esound_out_server, "");
+       strpcy(pulse_out_server, "");
        esound_out_port = 0;
 
        audio_duplex_driver = AUDIO_ALSA;
        esound_out_port = 0;
 
        audio_duplex_driver = AUDIO_ALSA;
@@ -65,6 +67,7 @@ AudioConfig& AudioConfig::operator=(AudioConfig &that)
        afirewire_in_port = that.afirewire_in_port;
        afirewire_in_channel = that.afirewire_in_channel;
        strcpy(esound_in_server, that.esound_in_server);
        afirewire_in_port = that.afirewire_in_port;
        afirewire_in_channel = that.afirewire_in_channel;
        strcpy(esound_in_server, that.esound_in_server);
+       strcpy(pulse_in_server, that.pulse_in_server);
        esound_in_port = that.esound_in_port;
        strcpy(oss_in_device, that.oss_in_device);
        oss_in_channels = that.oss_in_channels;
        esound_in_port = that.esound_in_port;
        strcpy(oss_in_device, that.oss_in_device);
        oss_in_channels = that.oss_in_channels;
@@ -74,6 +77,7 @@ AudioConfig& AudioConfig::operator=(AudioConfig &that)
        audio_out_driver = that.audio_out_driver;
        strcpy(oss_out_device, that.oss_out_device);
        strcpy(esound_out_server, that.esound_out_server);
        audio_out_driver = that.audio_out_driver;
        strcpy(oss_out_device, that.oss_out_device);
        strcpy(esound_out_server, that.esound_out_server);
+       strcpy(pulse_out_server, that.pulse_out_server);
        esound_out_port = that.esound_out_port;
        oss_out_channels = that.oss_out_channels;
        oss_out_bits = that.oss_out_bits;
        esound_out_port = that.esound_out_port;
        oss_out_channels = that.oss_out_channels;
        oss_out_bits = that.oss_out_bits;
@@ -103,6 +107,8 @@ int AudioConfig::load_defaults(BC_Hash *defaults)
        oss_in_bits =                 defaults->get("OSS_IN_BITS", 16);
        sprintf(esound_in_server, "");
                                      defaults->get("ESOUND_IN_SERVER", esound_in_server);
        oss_in_bits =                 defaults->get("OSS_IN_BITS", 16);
        sprintf(esound_in_server, "");
                                      defaults->get("ESOUND_IN_SERVER", esound_in_server);
+       sprintf(pulse_in_server, "");
+                                     defaults->get("PULSE_IN_SERVER", pulse_in_server);
        esound_in_port =              defaults->get("ESOUND_IN_PORT", 0);
 
        audio_out_driver =                defaults->get("AUDIO_OUT_DRIVER", AUDIO_ALSA);
        esound_in_port =              defaults->get("ESOUND_IN_PORT", 0);
 
        audio_out_driver =                defaults->get("AUDIO_OUT_DRIVER", AUDIO_ALSA);
@@ -113,6 +119,8 @@ int AudioConfig::load_defaults(BC_Hash *defaults)
        oss_out_bits =                defaults->get("OUT_BITS", 16);
        sprintf(esound_out_server, "");
                                      defaults->get("ESOUND_OUT_SERVER", esound_out_server);
        oss_out_bits =                defaults->get("OUT_BITS", 16);
        sprintf(esound_out_server, "");
                                      defaults->get("ESOUND_OUT_SERVER", esound_out_server);
+       sprintf(pulse_out_server, "");
+                                     defaults->get("PULSE_OUT_SERVER", pulse_out_server);
        esound_out_port =             defaults->get("ESOUND_OUT_PORT", 0);
 
        audio_duplex_driver =         defaults->get("AUDIO_DUPLEX_DRIVER", AUDIO_ALSA);
        esound_out_port =             defaults->get("ESOUND_OUT_PORT", 0);
 
        audio_duplex_driver =         defaults->get("AUDIO_DUPLEX_DRIVER", AUDIO_ALSA);
@@ -135,6 +143,7 @@ int AudioConfig::save_defaults(BC_Hash *defaults)
        defaults->update("OSS_IN_CHANNELS", oss_in_channels);
        defaults->update("OSS_IN_BITS", oss_in_bits);
        defaults->update("ESOUND_IN_SERVER", esound_in_server);
        defaults->update("OSS_IN_CHANNELS", oss_in_channels);
        defaults->update("OSS_IN_BITS", oss_in_bits);
        defaults->update("ESOUND_IN_SERVER", esound_in_server);
+       defaults->update("PULSE_IN_SERVER", pulse_in_server);
        defaults->update("ESOUND_IN_PORT", esound_in_port);
 
        defaults->update("AUDIO_OUT_DRIVER", audio_out_driver);
        defaults->update("ESOUND_IN_PORT", esound_in_port);
 
        defaults->update("AUDIO_OUT_DRIVER", audio_out_driver);
@@ -143,6 +152,7 @@ int AudioConfig::save_defaults(BC_Hash *defaults)
        defaults->update("OUT_CHANNELS", oss_out_channels);
        defaults->update("OUT_BITS", oss_out_bits);
        defaults->update("ESOUND_OUT_SERVER", esound_out_server);
        defaults->update("OUT_CHANNELS", oss_out_channels);
        defaults->update("OUT_BITS", oss_out_bits);
        defaults->update("ESOUND_OUT_SERVER", esound_out_server);
+       defaults->update("PULSE_OUT_SERVER", pulse_out_server);
        defaults->update("ESOUND_OUT_PORT", esound_out_port);
 
        defaults->update("AUDIO_DUPLEX_DRIVER", audio_duplex_driver);
        defaults->update("ESOUND_OUT_PORT", esound_out_port);
 
        defaults->update("AUDIO_DUPLEX_DRIVER", audio_duplex_driver);
index f8f839192ebfd48f6e96854d1a828951033233e2..fb1fb7969beb926e2297dab9bee67f405aa06f73 100644 (file)
@@ -43,12 +43,14 @@ public:
        int oss_in_bits;
        int afirewire_in_port, afirewire_in_channel;
        char esound_in_server[1024];
        int oss_in_bits;
        int afirewire_in_port, afirewire_in_channel;
        char esound_in_server[1024];
+       char pulse_in_server[1024];
        int esound_in_port;
 
 // Output
        int audio_out_driver;
        char oss_out_device[1024];
        char esound_out_server[1024];
        int esound_in_port;
 
 // Output
        int audio_out_driver;
        char oss_out_device[1024];
        char esound_out_server[1024];
+       char pulse_out_server[1024];
        int esound_out_port;
        int oss_out_channels;
        int oss_out_bits;
        int esound_out_port;
        int oss_out_channels;
        int oss_out_bits;
index 956d4a1004641911547e391839e027cf4705c2e0..0904ed5a1ae0115a0e14f57b124173a8ccc54308 100644 (file)
 #endif
 #include "audioalsa.h"
 #include "audiodvb.h"
 #endif
 #include "audioalsa.h"
 #include "audiodvb.h"
-#include "audiov4l2mpeg.h"
 #include "audioesound.h"
 #include "audiooss.h"
 #include "audioesound.h"
 #include "audiooss.h"
+#include "audiopulse.h"
+#include "audiov4l2mpeg.h"
 #include "asset.h"
 #include "bctimer.h"
 #include "condition.h"
 #include "asset.h"
 #include "bctimer.h"
 #include "condition.h"
@@ -257,6 +258,12 @@ int AudioDevice::create_lowlevel(AudioLowLevel* &lowlevel, int driver,int in)
                        lowlevel = new AudioV4L2MPEG(this);
                        break;
 #endif
                        lowlevel = new AudioV4L2MPEG(this);
                        break;
 #endif
+
+#ifdef HAVE_PULSE
+               case AUDIO_PULSE:
+                       lowlevel = new AudioPulse(this);
+                       break;
+#endif
                }
        }
        return 0;
                }
        }
        return 0;
index ed3977391729d180bb983add3c531c6373151347..2c12d9c4ad86dee427b1370d8871d514e5d809b5 100644 (file)
 
 #include "audioalsa.inc"
 #include "audioconfig.inc"
 
 #include "audioalsa.inc"
 #include "audioconfig.inc"
-#include "audiodvb.inc"
 #include "audiodevice.inc"
 #include "audiodevice.inc"
+#include "audiodvb.inc"
 #include "audioesound.inc"
 #include "audiooss.inc"
 #include "audioesound.inc"
 #include "audiooss.inc"
+#include "audiopulse.inc"
 #include "audiov4l2mpeg.inc"
 #include "bctimer.inc"
 #include "binary.h"
 #include "audiov4l2mpeg.inc"
 #include "bctimer.inc"
 #include "binary.h"
@@ -89,6 +90,7 @@ public:
        friend class AudioDVB;
        friend class AudioV4L2MPEG;
        friend class AudioOSS;
        friend class AudioDVB;
        friend class AudioV4L2MPEG;
        friend class AudioOSS;
+       friend class AudioPulse;
        friend class AudioESound;
        friend class Audio1394;
        friend class VDevice1394;
        friend class AudioESound;
        friend class Audio1394;
        friend class VDevice1394;
index be99c05a17926d80defa7751b3a7e6a452e216c9..fdfd948310067dfd43dcd44e0d14183c08df4fd8 100644 (file)
@@ -41,6 +41,7 @@ enum
        AUDIO_IEC61883,
        AUDIO_DVB,
        AUDIO_V4L2MPEG,
        AUDIO_IEC61883,
        AUDIO_DVB,
        AUDIO_V4L2MPEG,
+       AUDIO_PULSE,
 };
 
 #define AUDIO_OSS_TITLE "OSS"
 };
 
 #define AUDIO_OSS_TITLE "OSS"
@@ -55,5 +56,6 @@ enum
 #endif
 #define AUDIO_DVB_TITLE "DVB"
 #define        AUDIO_V4L2MPEG_TITLE "V4L2 MPEG"
 #endif
 #define AUDIO_DVB_TITLE "DVB"
 #define        AUDIO_V4L2MPEG_TITLE "V4L2 MPEG"
+#define AUDIO_PULSE_TITLE "Pulse Audio"
 
 #endif
 
 #endif
index 2beb4c8c69de58570712671ca5afab572c782e92..e4f2cd01c67cd7c08a756a51b5f27679b0979bfd 100644 (file)
@@ -375,11 +375,15 @@ void AudioDevice::run_output()
                output_buffer_t *obfr = &output[buffer_num];
                obfr->play_lock->lock("AudioDevice::run 1");
                if( !is_playing_back || playback_interrupted ) break;
                output_buffer_t *obfr = &output[buffer_num];
                obfr->play_lock->lock("AudioDevice::run 1");
                if( !is_playing_back || playback_interrupted ) break;
-               if( obfr->last_buffer ) { lowlevel_out->flush_device(); break; }
+               if( obfr->last_buffer ) {
+                       if( lowlevel_out ) lowlevel_out->flush_device();
+                       break;
+               }
 // get size for position information
 // write converted buffer synchronously
                double bfr_time = obfr->bfr_time;
 // get size for position information
 // write converted buffer synchronously
                double bfr_time = obfr->bfr_time;
-               int result = lowlevel_out->write_buffer(obfr->buffer, obfr->size);
+               int result = !lowlevel_out ? -1 :
+                       lowlevel_out->write_buffer(obfr->buffer, obfr->size);
 // allow writing to the buffer
                obfr->arm_lock->unlock();
                if( !result ) {
 // allow writing to the buffer
                obfr->arm_lock->unlock();
                if( !result ) {
diff --git a/cinelerra-5.1/cinelerra/audiopulse.C b/cinelerra-5.1/cinelerra/audiopulse.C
new file mode 100644 (file)
index 0000000..78db187
--- /dev/null
@@ -0,0 +1,251 @@
+/*
+ * CINELERRA
+ * Copyright (C) 2008-2019 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
+ * 
+ */
+
+#ifdef HAVE_PULSE
+#include "audiopulse.h"
+#include "adeviceprefs.h"
+#include "bctimer.h"
+#include "cstrdup.h"
+#include "language.h"
+#include "mutex.h"
+#include "playbackconfig.h"
+#include "recordconfig.h"
+
+#include <pulse/pulseaudio.h>
+#include <pulse/simple.h>
+
+AudioPulse::AudioPulse(AudioDevice *device)
+ : AudioLowLevel(device)
+{
+       buffer_position = 0;
+       timer_position = 0;
+       timer = new Timer;
+       timer_lock = new Mutex("AudioPulse::timer_lock");
+       dsp_in = 0;
+       dsp_out = 0;
+       period_usecs = 1000000;
+       frag_usecs = period_usecs / 32;
+       wr_spec = 0;
+       rd_spec = 0;
+}
+
+AudioPulse::~AudioPulse()
+{
+       delete (pa_sample_spec *)wr_spec;
+       delete (pa_sample_spec *)rd_spec;
+       delete timer_lock;
+       delete timer;
+       close_all();
+}
+
+int AudioPulse::open_input()
+{
+       pa_sample_spec *ss = new pa_sample_spec();
+       rd_spec = (void *)ss;
+
+       ss->format = PA_SAMPLE_S16LE;
+       ss->rate = device->in_samplerate; 
+       ss->channels = device->get_ichannels();   
+       device->in_bits = 16;
+       return init_input();
+}
+
+int AudioPulse::init_input()
+{
+       pa_sample_spec *ss = (pa_sample_spec *)rd_spec;
+       int error = 0;
+       char *server = 0;
+       if( device->in_config->pulse_in_server[0] )
+               server = device->in_config->pulse_in_server;
+       dsp_in = pa_simple_new(server, PROGRAM_NAME, PA_STREAM_RECORD, 
+               0, "recording", ss, 0, 0, &error);
+       if( !dsp_in ) {
+               printf("AudioPulse::open_input %d: failed server=%s %s\n", __LINE__, 
+                       server, pa_strerror(error));
+               return 1;
+       }
+
+       return 0;
+}
+
+
+int AudioPulse::open_output()
+{
+       pa_sample_spec *ss = new pa_sample_spec();
+       wr_spec = (void *)ss;
+       ss->format = PA_SAMPLE_S16LE;
+       ss->rate = device->out_samplerate;
+       ss->channels = device->get_ochannels();
+       device->out_bits = 16;
+       return init_output();
+}
+
+int AudioPulse::init_output()
+{
+       pa_sample_spec *ss = (pa_sample_spec *)wr_spec;
+       int error = 0;
+       char *server = device->out_config->pulse_out_server[0] ?
+               device->out_config->pulse_out_server : 0;
+       dsp_out = pa_simple_new(server, PROGRAM_NAME, PA_STREAM_PLAYBACK, 
+               NULL, "playback", ss, 0, 0, &error);
+       if( !dsp_out ) {
+               printf("AudioPulse::open_output %d: failed server=%s %s\n", 
+                       __LINE__, server, pa_strerror(error));
+               return 1;
+       }
+       timer->update();
+       device->device_buffer = 0;
+       buffer_position = 0;
+       return 0;
+}
+
+
+int AudioPulse::close_all()
+{
+       if( dsp_out ) {
+               int error = 0;
+               pa_simple_flush((pa_simple*)dsp_out, &error);
+               pa_simple_free((pa_simple*)dsp_out);
+               dsp_out = 0;
+       }
+
+       if( dsp_in ) {
+               pa_simple_free((pa_simple*)dsp_in);
+               dsp_in = 0;
+       }
+       delete (pa_sample_spec *)wr_spec;  wr_spec = 0;
+       delete (pa_sample_spec *)rd_spec;  rd_spec = 0;
+       buffer_position = 0;
+       timer_position = 0;
+       return 0;
+}
+
+int64_t AudioPulse::device_position()
+{
+       timer_lock->lock("AudioPulse::device_position");
+       int64_t samples = timer->get_scaled_difference(device->out_samplerate);
+       int64_t result = timer_position + samples;
+       timer_lock->unlock();
+       return result;
+}
+
+int AudioPulse::write_buffer(char *buffer, int size)
+{
+       if( !dsp_out && init_output() )
+               return 1;
+       int error = 0;
+       timer_lock->lock("AudioPulse::write_buffer");
+       int64_t usecs = pa_simple_get_latency((pa_simple*)dsp_out, &error);
+       int64_t delay = device->out_samplerate * usecs / 1000000;
+       timer_position = buffer_position - delay;
+       timer->update();
+       timer_lock->unlock();
+
+       AudioThread *audio_out = device->audio_out;
+       int sample_size = (device->out_bits / 8) * device->get_ochannels();
+       int samples = device->out_samplerate * frag_usecs / 1000000;
+       int64_t frag_bytes = samples * sample_size;
+
+       buffer_position += size / sample_size;
+       int ret = 0;
+        while( !ret && size > 0 && !device->playback_interrupted ) {
+               audio_out->Thread::enable_cancel();
+               usecs = pa_simple_get_latency((pa_simple*)dsp_out, &error);
+               if( usecs < period_usecs ) {
+                       int64_t len = size;
+                       if( len > frag_bytes ) len = frag_bytes;
+                       if( pa_simple_write((pa_simple*)dsp_out, buffer, len, &error) < 0 )
+                               ret = 1;
+                       buffer += len;  size -= len;
+               }
+               else
+                       usleep(frag_usecs);
+               audio_out->Thread::disable_cancel();
+       }
+       if( ret )
+               printf("AudioPulse::write_buffer %d: %s\n", 
+                       __LINE__, pa_strerror(error));
+       return ret;
+}
+
+int AudioPulse::read_buffer(char *buffer, int size)
+{
+       if( !dsp_in && init_input() )
+               return 1;
+
+       int error = 0;
+       int result = pa_simple_read((pa_simple*)dsp_in, buffer, size, &error);
+       if( result < 0 ) {
+               printf("AudioPulse::read_buffer %d: %s\n", 
+                       __LINE__, pa_strerror(error));
+               return 1;
+       }
+
+//printf("AudioPulse::read_buffer %d %d\n", __LINE__, size);
+
+       return 0;
+}
+
+int AudioPulse::output_wait()
+{
+       int error = 0;
+       pa_usec_t latency = pa_simple_get_latency((pa_simple*)dsp_out, &error);
+       int64_t udelay = latency;
+        while( udelay > 0 && !device->playback_interrupted ) {
+                int64_t usecs = udelay;
+                if( usecs > 100000 ) usecs = 100000;
+                usleep(usecs);
+                udelay -= usecs;
+        }
+        if( device->playback_interrupted &&
+            !device->out_config->interrupt_workaround )
+               pa_simple_flush((pa_simple*)dsp_out, &error);
+        return 0;
+}
+
+int AudioPulse::flush_device()
+{
+       if( dsp_out ) {
+               output_wait();
+               int error = 0;
+               pa_simple_drain((pa_simple*)dsp_out, &error);
+       }
+       return 0;
+}
+
+int AudioPulse::interrupt_playback()
+{
+       if( !dsp_out ) {
+               return 1;
+       }
+
+       int error = 0;
+       int result = pa_simple_flush((pa_simple*)dsp_out, &error);
+       if( result < 0 ) {
+               printf("AudioPulse::interrupt_playback %d: %s\n", 
+                       __LINE__,
+                       pa_strerror(error));
+               return 1;
+       }
+
+       return 0;
+}
+
+#endif
diff --git a/cinelerra-5.1/cinelerra/audiopulse.h b/cinelerra-5.1/cinelerra/audiopulse.h
new file mode 100644 (file)
index 0000000..1739c25
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * CINELERRA
+ * Copyright (C) 2008-2019 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
+ * 
+ */
+
+#ifndef AUDIOPULSE_H
+#define AUDIOPULSE_H
+
+#include "arraylist.h"
+#include "audiodevice.h"
+#include "bctimer.inc"
+
+
+class AudioPulse : public AudioLowLevel
+{
+public:
+       AudioPulse(AudioDevice *device);
+       ~AudioPulse();
+    
+       int open_input();
+       int init_input();
+       int open_output();
+       int init_output();
+       int close_all();
+       int64_t device_position();
+       int write_buffer(char *buffer, int size);
+       int read_buffer(char *buffer, int size);
+       int output_wait();
+       int flush_device();
+       int interrupt_playback();
+
+// the pulse audio handles
+       void *dsp_out;
+       void *dsp_in;
+       void *wr_spec;
+       void *rd_spec;
+
+       int64_t buffer_position;
+       int64_t timer_position;
+       int64_t frag_usecs, period_usecs;
+       Timer *timer;
+       Mutex *timer_lock;
+
+       int64_t samples_output() { return buffer_position; }
+};
+
+#endif
diff --git a/cinelerra-5.1/cinelerra/audiopulse.inc b/cinelerra-5.1/cinelerra/audiopulse.inc
new file mode 100644 (file)
index 0000000..c0b3865
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * CINELERRA
+ * Copyright (C) 2008-2019 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
+ * 
+ */
+
+
+#ifndef AUDIOPULSE_INC
+#define AUDIOPULSE_INC
+
+
+
+
+class AudioPulse;
+
+
+
+#endif
index a3ceb1dbcb830439596ca6f670efa034ce4d6086..6742988e333ebabf81714814be55c37c8fb40ad0 100644 (file)
@@ -23,6 +23,5 @@
 #define CWINDOW_INC
 
 class CWindow;
 #define CWINDOW_INC
 
 class CWindow;
-class KeyEvCWindowHandler;
 
 #endif
 
 #endif
index e0c40b9c73755cbf15ae1881dd9d8c715cb3e43a..2011bcf84cd0a43141c55735b49e78d9504bf3fc 100644 (file)
@@ -213,7 +213,7 @@ int EditPopupCutPack::handle_event()
 }
 
 EditPopupMute::EditPopupMute(MWindow *mwindow, EditPopup *popup)
 }
 
 EditPopupMute::EditPopupMute(MWindow *mwindow, EditPopup *popup)
- : BC_MenuItem(_("Mute"),_("Ctrl-m"),'m')
+ : BC_MenuItem(C_("Mute"),_("Ctrl-m"),'m')
 {
        this->mwindow = mwindow;
        this->popup = popup;
 {
        this->mwindow = mwindow;
        this->popup = popup;
index 3c6fd97f742e735d3941d9a0e775e52682e26d41..87b8853a28344ad1059a25b59be72910f08e2ac9 100644 (file)
 
 #include <sys/types.h>
 #include <sys/stat.h>
 
 #include <sys/types.h>
 #include <sys/stat.h>
+#ifdef HAVE_ISOFS
 #include <linux/iso_fs.h>
 #include <linux/iso_fs.h>
+#endif
 
 // check for isofs volume_id for dvd/cdrom
 
 static int udf_volume_id(const char *path, char *fname)
 {
 
 // check for isofs volume_id for dvd/cdrom
 
 static int udf_volume_id(const char *path, char *fname)
 {
+       int result = 1;
+#ifdef HAVE_ISOFS
        struct stat st;
        if( stat(path,&st) ) return 1;
        // search mounted devices
        FILE *fp = fopen("/proc/mounts","r");
        if( !fp ) return 1;
 
        struct stat st;
        if( stat(path,&st) ) return 1;
        // search mounted devices
        FILE *fp = fopen("/proc/mounts","r");
        if( !fp ) return 1;
 
-       int result = 1;
        while( result && !feof(fp) && !ferror(fp) ) {
                char devpath[BCTEXTLEN], mpath[BCTEXTLEN];
                char options[BCTEXTLEN], line[BCTEXTLEN];
        while( result && !feof(fp) && !ferror(fp) ) {
                char devpath[BCTEXTLEN], mpath[BCTEXTLEN];
                char options[BCTEXTLEN], line[BCTEXTLEN];
@@ -122,6 +125,7 @@ static int udf_volume_id(const char *path, char *fname)
        }
 
        fclose(fp);
        }
 
        fclose(fp);
+#endif
        return result;
 }
 
        return result;
 }
 
index 5862b9432f7dfd27b5e7a2a09ea46cca9c959933..a21297e0df7fa633bca7e129aafa68a0901d0050 100644 (file)
@@ -243,16 +243,20 @@ void MainSession::default_window_positions(int window_config)
                case 1024: right_w = 1280;  break;
                case 1200: right_w = 1600;  break;
                case 1080: right_w = 1920;  break;
                case 1024: right_w = 1280;  break;
                case 1200: right_w = 1600;  break;
                case 1080: right_w = 1920;  break;
-               default:   right_w = root_w/2;  break;
+               default:
+                       dual_head = 0;
+                       break;
                }
                }
-               if( window_config == 1 ) {
-                       root_x = root_w - right_w;
-                       root_w = right_w;
-               }
-               else {
-                       // use same aspect ratio to compute left height
-                       root_w -= right_w;
-                       root_h = (root_w*root_h) / right_w;
+               if( dual_head ) {
+                       if( window_config == 1 ) {
+                               root_x = root_w - right_w;
+                               root_w = right_w;
+                       }
+                       else {
+                               // use same aspect ratio to compute left height
+                               root_w -= right_w;
+                               root_h = (root_w*root_h) / right_w;
+                       }
                }
        }
 
                }
        }
 
index 988e49a3cd908e8abd339ad797ac2e61a20f4007..c959af278e7dd832f0a173c6ba3b8df2fe8b2a50 100644 (file)
@@ -268,7 +268,9 @@ MWindow::~MWindow()
        delete beeper;
        delete create_bd;       create_bd = 0;
        delete create_dvd;      create_dvd = 0;
        delete beeper;
        delete create_bd;       create_bd = 0;
        delete create_dvd;      create_dvd = 0;
+#ifdef HAVE_SHUTTLE
        delete shuttle;         shuttle = 0;
        delete shuttle;         shuttle = 0;
+#endif
 #ifdef HAVE_WINTV
        delete wintv;           wintv = 0;
 #endif
 #ifdef HAVE_WINTV
        delete wintv;           wintv = 0;
 #endif
@@ -675,6 +677,7 @@ int MWindow::init_plugins(MWindow *mwindow, Preferences *preferences)
 
 int MWindow::init_ladspa_plugins(MWindow *mwindow, Preferences *preferences)
 {
 
 int MWindow::init_ladspa_plugins(MWindow *mwindow, Preferences *preferences)
 {
+#ifdef HAVE_LADSPA
        char *path = getenv("LADSPA_PATH");
        char ladspa_path[BCTEXTLEN];
        if( !path ) {
        char *path = getenv("LADSPA_PATH");
        char ladspa_path[BCTEXTLEN];
        if( !path ) {
@@ -719,6 +722,7 @@ int MWindow::init_ladspa_plugins(MWindow *mwindow, Preferences *preferences)
                }
                fclose(fp);
        }
                }
                fclose(fp);
        }
+#endif
        return 1;
 }
 
        return 1;
 }
 
@@ -742,7 +746,7 @@ void MWindow::scan_plugin_index(MWindow *mwindow, Preferences *preferences, FILE
        char plugin_path[BCTEXTLEN];
        sprintf(plugin_path, "%s/%s", plug_dir, plug_path);
        FileSystem fs;
        char plugin_path[BCTEXTLEN];
        sprintf(plugin_path, "%s/%s", plug_dir, plug_path);
        FileSystem fs;
-       fs.set_filter( "[*.plugin][*.so]" );
+       fs.set_filter( "[*.plugin][*.so][*.dll]" );
        int result = fs.update(plugin_path);
        if( result || !fs.dir_list.total ) return;
        int vis_id = idx++;
        int result = fs.update(plugin_path);
        if( result || !fs.dir_list.total ) return;
        int vis_id = idx++;
index 22fee714ef0675a3c74cba4585ecd1195cca4b24..24976c56c2f2b49e1562cb0d32fc5b44df141f0d 100644 (file)
@@ -30,10 +30,13 @@ AudioOutConfig::AudioOutConfig()
        fragment_size = 16384;
 #ifdef HAVE_ALSA
        driver = AUDIO_ALSA;
        fragment_size = 16384;
 #ifdef HAVE_ALSA
        driver = AUDIO_ALSA;
+#else
+#ifdef HAVE_PULSE
+       driver = AUDIO_PULSE;
 #else
        driver = AUDIO_OSS;
 #endif
 #else
        driver = AUDIO_OSS;
 #endif
-
+#endif
        audio_offset = 0.0;
        map51_2 = 0;
        play_gain = 1.0;
        audio_offset = 0.0;
        map51_2 = 0;
        play_gain = 1.0;
@@ -48,6 +51,8 @@ AudioOutConfig::AudioOutConfig()
        esound_out_server[0] = 0;
        esound_out_port = 0;
 
        esound_out_server[0] = 0;
        esound_out_port = 0;
 
+       pulse_out_server[0] = 0;
+
        sprintf(alsa_out_device, "default");
        alsa_out_bits = 16;
        interrupt_workaround = 0;
        sprintf(alsa_out_device, "default");
        alsa_out_bits = 16;
        interrupt_workaround = 0;
@@ -85,12 +90,10 @@ int AudioOutConfig::operator==(AudioOutConfig &that)
                !strcmp(oss_out_device[0], that.oss_out_device[0]) &&
                (oss_out_bits == that.oss_out_bits) &&
 
                !strcmp(oss_out_device[0], that.oss_out_device[0]) &&
                (oss_out_bits == that.oss_out_bits) &&
 
-
-
                !strcmp(esound_out_server, that.esound_out_server) &&
                (esound_out_port == that.esound_out_port) &&
 
                !strcmp(esound_out_server, that.esound_out_server) &&
                (esound_out_port == that.esound_out_port) &&
 
-
+               !strcmp(pulse_out_server, that.pulse_out_server) &&
 
                !strcmp(alsa_out_device, that.alsa_out_device) &&
                (alsa_out_bits == that.alsa_out_bits) &&
 
                !strcmp(alsa_out_device, that.alsa_out_device) &&
                (alsa_out_bits == that.alsa_out_bits) &&
@@ -126,6 +129,9 @@ void AudioOutConfig::copy_from(AudioOutConfig *src)
 
        strcpy(esound_out_server, src->esound_out_server);
        esound_out_port = src->esound_out_port;
 
        strcpy(esound_out_server, src->esound_out_server);
        esound_out_port = src->esound_out_port;
+
+       strcpy(pulse_out_server, src->pulse_out_server);
+
        for(int i = 0; i < MAXDEVICES; i++)
        {
                oss_enable[i] = src->oss_enable[i];
        for(int i = 0; i < MAXDEVICES; i++)
        {
                oss_enable[i] = src->oss_enable[i];
@@ -171,8 +177,11 @@ int AudioOutConfig::load_defaults(BC_Hash *defaults, int active_config)
        interrupt_workaround = defaults->getf(interrupt_workaround, "%sALSA_INTERRUPT_WORKAROUND", prefix);
 
        defaults->getf(esound_out_server, "%sESOUND_OUT_SERVER", prefix);
        interrupt_workaround = defaults->getf(interrupt_workaround, "%sALSA_INTERRUPT_WORKAROUND", prefix);
 
        defaults->getf(esound_out_server, "%sESOUND_OUT_SERVER", prefix);
+       defaults->getf(pulse_out_server, "%sPULSE_OUT_SERVER", prefix);
        esound_out_port = defaults->getf(esound_out_port, "%sESOUND_OUT_PORT", prefix);
 
        esound_out_port = defaults->getf(esound_out_port, "%sESOUND_OUT_PORT", prefix);
 
+       defaults->getf(pulse_out_server, "%sPULSE_OUT_SERVER", prefix);
+
        firewire_channel = defaults->getf(firewire_channel, "%sAFIREWIRE_OUT_CHANNEL", prefix);
        firewire_port = defaults->getf(firewire_port, "%sAFIREWIRE_OUT_PORT", prefix);
        defaults->getf(firewire_path, "%sAFIREWIRE_OUT_PATH", prefix);
        firewire_channel = defaults->getf(firewire_channel, "%sAFIREWIRE_OUT_CHANNEL", prefix);
        firewire_port = defaults->getf(firewire_port, "%sAFIREWIRE_OUT_PORT", prefix);
        defaults->getf(firewire_path, "%sAFIREWIRE_OUT_PATH", prefix);
@@ -211,8 +220,11 @@ int AudioOutConfig::save_defaults(BC_Hash *defaults, int active_config)
        defaults->updatef(interrupt_workaround, "%sALSA_INTERRUPT_WORKAROUND", prefix);
 
        defaults->updatef(esound_out_server, "%sESOUND_OUT_SERVER", prefix);
        defaults->updatef(interrupt_workaround, "%sALSA_INTERRUPT_WORKAROUND", prefix);
 
        defaults->updatef(esound_out_server, "%sESOUND_OUT_SERVER", prefix);
+       defaults->updatef(pulse_out_server, "%sPULSE_OUT_SERVER", prefix);
        defaults->updatef(esound_out_port, "%sESOUND_OUT_PORT", prefix);
 
        defaults->updatef(esound_out_port, "%sESOUND_OUT_PORT", prefix);
 
+       defaults->updatef(pulse_out_server, "%sPULSE_OUT_SERVER", prefix);
+
        defaults->updatef(firewire_channel, "%sAFIREWIRE_OUT_CHANNEL", prefix);
        defaults->updatef(firewire_port, "%sAFIREWIRE_OUT_PORT", prefix);
        defaults->updatef(firewire_path, "%sAFIREWIRE_OUT_PATH", prefix);
        defaults->updatef(firewire_channel, "%sAFIREWIRE_OUT_CHANNEL", prefix);
        defaults->updatef(firewire_port, "%sAFIREWIRE_OUT_PORT", prefix);
        defaults->updatef(firewire_path, "%sAFIREWIRE_OUT_PATH", prefix);
index 1896a5da8c9f839aadf248dc741070a6b1f45632..c4a83d37d6710b684651ed5baf2342989e105458 100644 (file)
@@ -58,7 +58,8 @@ public:
 
        char esound_out_server[BCTEXTLEN];
        int esound_out_port;
 
        char esound_out_server[BCTEXTLEN];
        int esound_out_port;
-
+// PulseAudio
+       char pulse_out_server[BCTEXTLEN];
 // ALSA options
        char alsa_out_device[BCTEXTLEN];
        int alsa_out_bits;
 // ALSA options
        char alsa_out_device[BCTEXTLEN];
        int alsa_out_bits;
index 2ea355b9481b27a487269df5cc9adbc09ebb1a97..749a5e6f601585bdce6edb6b9e7e677c8feea044 100644 (file)
@@ -48,7 +48,7 @@ AudioInConfig::AudioInConfig()
        strcpy(firewire_path, "/dev/raw1394");
        esound_in_server[0] = 0;
        esound_in_port = 0;
        strcpy(firewire_path, "/dev/raw1394");
        esound_in_server[0] = 0;
        esound_in_port = 0;
-
+       pulse_in_server[0] = 0;
        sprintf(alsa_in_device, "default");
        alsa_in_bits = 16;
        in_samplerate = 48000;
        sprintf(alsa_in_device, "default");
        alsa_in_bits = 16;
        in_samplerate = 48000;
@@ -100,6 +100,8 @@ void AudioInConfig::copy_from(AudioInConfig *src)
        strcpy(esound_in_server, src->esound_in_server);
        esound_in_port = src->esound_in_port;
 
        strcpy(esound_in_server, src->esound_in_server);
        esound_in_port = src->esound_in_port;
 
+       strcpy(pulse_in_server, src->pulse_in_server);
+
        for(int i = 0; i < MAXDEVICES; i++)
        {
                oss_enable[i] = src->oss_enable[i];
        for(int i = 0; i < MAXDEVICES; i++)
        {
                oss_enable[i] = src->oss_enable[i];
@@ -139,8 +141,9 @@ int AudioInConfig::load_defaults(BC_Hash *defaults)
        }
        oss_in_bits = defaults->get("R_OSS_IN_BITS", oss_in_bits);
        defaults->get("R_ESOUND_IN_SERVER", esound_in_server);
        }
        oss_in_bits = defaults->get("R_OSS_IN_BITS", oss_in_bits);
        defaults->get("R_ESOUND_IN_SERVER", esound_in_server);
+       defaults->get("R_PULSE_IN_SERVER", pulse_in_server);
        esound_in_port = defaults->get("R_ESOUND_IN_PORT", esound_in_port);
        esound_in_port = defaults->get("R_ESOUND_IN_PORT", esound_in_port);
-
+       defaults->get("R_PULSE_IN_SERVER", pulse_in_server);
        defaults->get("R_ALSA_IN_DEVICE", alsa_in_device);
        alsa_in_bits = defaults->get("R_ALSA_IN_BITS", alsa_in_bits);
        in_samplerate = defaults->get("R_IN_SAMPLERATE", in_samplerate);
        defaults->get("R_ALSA_IN_DEVICE", alsa_in_device);
        alsa_in_bits = defaults->get("R_ALSA_IN_BITS", alsa_in_bits);
        in_samplerate = defaults->get("R_IN_SAMPLERATE", in_samplerate);
@@ -170,8 +173,9 @@ int AudioInConfig::save_defaults(BC_Hash *defaults)
 
        defaults->update("R_OSS_IN_BITS", oss_in_bits);
        defaults->update("R_ESOUND_IN_SERVER", esound_in_server);
 
        defaults->update("R_OSS_IN_BITS", oss_in_bits);
        defaults->update("R_ESOUND_IN_SERVER", esound_in_server);
+       defaults->update("R_PULSE_IN_SERVER", pulse_in_server);
        defaults->update("R_ESOUND_IN_PORT", esound_in_port);
        defaults->update("R_ESOUND_IN_PORT", esound_in_port);
-
+       defaults->update("R_PULSE_IN_SERVER", pulse_in_server);
        defaults->update("R_ALSA_IN_DEVICE", alsa_in_device);
        defaults->update("R_ALSA_IN_BITS", alsa_in_bits);
        defaults->update("R_IN_SAMPLERATE", in_samplerate);
        defaults->update("R_ALSA_IN_DEVICE", alsa_in_device);
        defaults->update("R_ALSA_IN_BITS", alsa_in_bits);
        defaults->update("R_IN_SAMPLERATE", in_samplerate);
index c650c0098021f13d9b9035a88022019ca604435c..54f031b323972d6ccd6671b6160b3c6fcb4dc120 100644 (file)
@@ -54,6 +54,7 @@ public:
 
        char esound_in_server[BCTEXTLEN];
        int esound_in_port;
 
        char esound_in_server[BCTEXTLEN];
        int esound_in_port;
+       char pulse_in_server[BCTEXTLEN];
        char alsa_in_device[BCTEXTLEN];
        int alsa_in_bits;
        char dvb_in_adapter[BCTEXTLEN];
        char alsa_in_device[BCTEXTLEN];
        int alsa_in_bits;
        char dvb_in_adapter[BCTEXTLEN];
index e22d28e5b8372fe67175da5f793dcb4f073b4931..a4749bb1a0dbf98642444540d81a8af3deb5b9fb 100644 (file)
@@ -24,7 +24,8 @@
 // An object which contains samples
 
 
 // An object which contains samples
 
 
-
+#include "bcresources.h"
+#include "bcwindowbase.h"
 #include "samples.h"
 #include <stdio.h>
 #include <sys/shm.h>
 #include "samples.h"
 #include <stdio.h>
 #include <sys/shm.h>
@@ -46,8 +47,15 @@ Samples::Samples(int samples)
 Samples::Samples(Samples *src)
 {
        reset();
 Samples::Samples(Samples *src)
 {
        reset();
-       share(src->get_shmid());
-       set_allocated(src->get_allocated());
+       int src_sz = src->get_allocated();
+       if( use_shm ) {
+               share(src->get_shmid());
+               set_allocated(src_sz);
+       }
+       else {
+               share(src->data);
+               set_allocated(0);
+       }
        set_offset(src->get_offset());
 }
 
        set_offset(src->get_offset());
 }
 
@@ -58,7 +66,8 @@ Samples::~Samples()
 
 void Samples::reset()
 {
 
 void Samples::reset()
 {
-       use_shm = 1;
+       BC_Resources *resources = BC_WindowBase::get_resources();
+       use_shm = !resources || !resources->use_shm ? 0 : 1;
        shmid = -1;
        data = 0;
        allocated = 0;
        shmid = -1;
        data = 0;
        allocated = 0;
@@ -71,7 +80,7 @@ void Samples::clear_objects()
        {
                if(data) shmdt(data);
        }
        {
                if(data) shmdt(data);
        }
-       else
+       else if( allocated )
        {
                delete [] data;
        }
        {
                delete [] data;
        }
@@ -95,16 +104,31 @@ void Samples::share(int shmid)
        this->allocated = 0;
        this->shmid = shmid;
 }
        this->allocated = 0;
        this->shmid = shmid;
 }
+void Samples::share(double *buffer)
+{
+       if(data)
+       {
+               if(use_shm)
+                       shmdt(data);
+               else
+                       delete [] data;
+       }
+       this->use_shm = 0;
+       data = buffer;
+       this->allocated = 0;
+       this->shmid = -1;
+}
+
 
 void Samples::allocate(int samples, int use_shm)
 {
 
 void Samples::allocate(int samples, int use_shm)
 {
-       if(data &&
+       if( !this->use_shm ) use_shm = 0;
+       if( data &&
                this->allocated >= samples &&
                this->allocated >= samples &&
-               this->use_shm == use_shm) return;
+               this->use_shm == use_shm ) return;
 
 
-       if(data)
-       {
-               if(this->use_shm)
+       if( data ) {
+               if( this->use_shm )
                        shmdt(data);
                else
                        delete [] data;
                        shmdt(data);
                else
                        delete [] data;
@@ -112,8 +136,7 @@ void Samples::allocate(int samples, int use_shm)
 
        this->use_shm = use_shm;
 
 
        this->use_shm = use_shm;
 
-       if(use_shm)
-       {
+       if( use_shm ) {
                shmid = shmget(IPC_PRIVATE,
                        (samples + 1) * sizeof(double),
                        IPC_CREAT | 0777);
                shmid = shmget(IPC_PRIVATE,
                        (samples + 1) * sizeof(double),
                        IPC_CREAT | 0777);
@@ -121,18 +144,12 @@ void Samples::allocate(int samples, int use_shm)
        // This causes it to automatically delete when the program exits.
                shmctl(shmid, IPC_RMID, 0);
        }
        // This causes it to automatically delete when the program exits.
                shmctl(shmid, IPC_RMID, 0);
        }
-       else
-       {
+       else {
                shmid = -1;
                data = new double[samples];
        }
 
                shmid = -1;
                data = new double[samples];
        }
 
-
        this->allocated = samples;
        this->allocated = samples;
-
-
-
-
 }
 
 // Get the buffer
 }
 
 // Get the buffer
index dc19756601c15d8d13ac10bf33a41ed660e0ea5d..a6cf599cbb2d69a4883e3a6bc3cc1af2360c141a 100644 (file)
@@ -41,6 +41,7 @@ public:
        void reset();
        void clear_objects();
        void share(int shmid);
        void reset();
        void clear_objects();
        void share(int shmid);
+       void share(double *buffer);
        void allocate(int samples, int use_shm);
 // Get the buffer
        double* get_data();
        void allocate(int samples, int use_shm);
 // Get the buffer
        double* get_data();
index 6793a03fb3463b73ae9acdb08375a6f6cc3cdef6..06406d53526282ad9628d5c3dbd14b28c283019a 100644 (file)
@@ -1,5 +1,6 @@
 #ifndef __SHUTTLE_H__
 #define __SHUTTLE_H__
 #ifndef __SHUTTLE_H__
 #define __SHUTTLE_H__
+#ifdef HAVE_SHUTTLE
 
 #include "arraylist.h"
 #include "bcwindowbase.inc"
 
 #include "arraylist.h"
 #include "bcwindowbase.inc"
@@ -20,8 +21,7 @@
 // delay in ms before processing each XTest event
 // CurrentTime means no delay
 #define DELAY CurrentTime
 // delay in ms before processing each XTest event
 // CurrentTime means no delay
 #define DELAY CurrentTime
-// playback max speed -64x .. 64x
-#define SHUTTLE_MAX_SPEED 64.
+
 #define SHUTTLE_INTERFACE 0
 
 // protocol for events from the shuttlepro HUD device
 #define SHUTTLE_INTERFACE 0
 
 // protocol for events from the shuttlepro HUD device
@@ -257,3 +257,4 @@ public:
 };
 
 #endif
 };
 
 #endif
+#endif
index 5919e9d24c679c893751d8744c3d58d4cd3cba34..db6b37fd1cad0b4e5647b83cbb0d5f2dbdd14fa8 100644 (file)
@@ -9,4 +9,7 @@ class Translation;
 class Translations;
 class Shuttle;
 
 class Translations;
 class Shuttle;
 
+// playback max speed -64x .. 64x
+#define SHUTTLE_MAX_SPEED 64.
+
 #endif
 #endif
index 770556c64a99f942f8ae500869d8974c284f8c10..289ae2616f4b150389d7c193e4dc7a0efd4976c8 100644 (file)
@@ -841,8 +841,11 @@ void SWindowGUI::save_spumux_data()
                if( !track->record ) continue;
                char *cp = track_title, *ep = cp+sizeof(track_title)-6;
                for( const char *bp=track->title; cp<ep && *bp!=0; ) {
                if( !track->record ) continue;
                char *cp = track_title, *ep = cp+sizeof(track_title)-6;
                for( const char *bp=track->title; cp<ep && *bp!=0; ) {
-                       int b = butf8(bp), c = !iswalnum(b) ? '_' : b;
-                       butf8(c, cp);
+                       int wch = butf8(bp); // iswalnum(wch) broken by MS port
+                       if( !( (wch >= 'A' && wch <= 'Z') ||
+                              (wch >= 'a' && wch <= 'z') ||
+                              (wch >= '0' && wch <= '9') ) ) wch = '_';
+                       butf8(wch, cp);
                }
                *cp = 0;
                snprintf(ext,len,"-%s.udvd",track_title);
                }
                *cp = 0;
                snprintf(ext,len,"-%s.udvd",track_title);
index 2ac5cccd290e6ee2c899d990b0ea5e5640df1679..88e07d811926598142ce8dbe4f5219c9e18f5338 100644 (file)
@@ -1896,6 +1896,8 @@ void TrackCanvas::draw_hard_edges()
                for(Edit *edit = track->edits->first; edit; edit = edit->next) {
                        if( !edit->hard_left && !edit->hard_right ) continue;
                        edit_dimensions(edit, x, y, w, h);
                for(Edit *edit = track->edits->first; edit; edit = edit->next) {
                        if( !edit->hard_left && !edit->hard_right ) continue;
                        edit_dimensions(edit, x, y, w, h);
+                       if( !MWindowGUI::visible(x, x + w, 0, get_w()) ||
+                           !MWindowGUI::visible(y, y + h, 0, get_h()) ) continue;
                        set_color(GREEN);
                        set_opaque();
                        int y1 = y;
                        set_color(GREEN);
                        set_opaque();
                        int y1 = y;
index fbd96978f72d85c6fdbe82f3789143bd01091913..3245c168c746aaea789f855172e0b745db60c4df 100644 (file)
@@ -515,7 +515,9 @@ void VDriverMenu::create_objects()
        else
        {
                add_item(new VDriverItem(this, PLAYBACK_X11_TITLE, PLAYBACK_X11));
        else
        {
                add_item(new VDriverItem(this, PLAYBACK_X11_TITLE, PLAYBACK_X11));
+#ifdef HAVE_XV
                add_item(new VDriverItem(this, PLAYBACK_X11_XV_TITLE, PLAYBACK_X11_XV));
                add_item(new VDriverItem(this, PLAYBACK_X11_XV_TITLE, PLAYBACK_X11_XV));
+#endif
 #ifdef HAVE_GL
 // Check runtime glx version. pbuffer needs >= 1.3
                if(get_opengl_server_version() >= 103)
 #ifdef HAVE_GL
 // Check runtime glx version. pbuffer needs >= 1.3
                if(get_opengl_server_version() >= 103)
index 599a835d6af706493efc0fbc034724616ab30b35..b0c4e77297b9f22eb20975ee4ab7eae225780537 100644 (file)
@@ -29,8 +29,6 @@ CFG_CFLAGS+=" -I/usr/include/freetype2 -I/usr/local/include/freetype2"
 CFG_CFLAGS+=" -I/usr/include/uuid -I/usr/local/include/uuid"
 CFG_CFLAGS+=" -I/usr/include/mjpegtools -I/usr/local/include/mjpegtools"
 
 CFG_CFLAGS+=" -I/usr/include/uuid -I/usr/local/include/uuid"
 CFG_CFLAGS+=" -I/usr/include/mjpegtools -I/usr/local/include/mjpegtools"
 
-CFG_LDFLAGS+=" -z noexecstack"
-
 AC_DEFUN([CHECK_WITH], [
 AC_ARG_WITH([$1],
   AC_HELP_STRING([--with-[$1]], [$2 ($4)]),
 AC_DEFUN([CHECK_WITH], [
 AC_ARG_WITH([$1],
   AC_HELP_STRING([--with-[$1]], [$2 ($4)]),
@@ -41,12 +39,12 @@ AC_SUBST([WANT_$3])
 CHECK_WITH([jobs],[parallel build jobs],[JOBS],[auto])
 CHECK_WITH([exec-name],[binary executable name],[CIN],[cin])
 CHECK_WITH([single-user],[to install cin in bin],[CINBIN_BUILD],[no])
 CHECK_WITH([jobs],[parallel build jobs],[JOBS],[auto])
 CHECK_WITH([exec-name],[binary executable name],[CIN],[cin])
 CHECK_WITH([single-user],[to install cin in bin],[CINBIN_BUILD],[no])
-CHECK_WITH([ladspa-build],[build ladspa library],[LADSPA_BUILD],[yes])
 CHECK_WITH([lv2],[lv2 library support],[LV2],[yes])
 CHECK_WITH([cinlib],[cinelerra library path],[CINLIB_DIR],[auto])
 CHECK_WITH([cindat],[cinelerra share path],[CINDAT_DIR],[auto])
 CHECK_WITH([plugin-dir],[plugin install dir],[PLUGIN_DIR],[auto])
 CHECK_WITH([ladspa-dir],[ladspa install dir],[LADSPA_DIR],[auto])
 CHECK_WITH([lv2],[lv2 library support],[LV2],[yes])
 CHECK_WITH([cinlib],[cinelerra library path],[CINLIB_DIR],[auto])
 CHECK_WITH([cindat],[cinelerra share path],[CINDAT_DIR],[auto])
 CHECK_WITH([plugin-dir],[plugin install dir],[PLUGIN_DIR],[auto])
 CHECK_WITH([ladspa-dir],[ladspa install dir],[LADSPA_DIR],[auto])
+CHECK_WITH([ladspa-build],[build ladspa library],[LADSPA_BUILD],[yes])
 CHECK_WITH([config-dir],[.bcast config dir],[CONFIG_DIR],[$$HOME/.bcast5])
 CHECK_WITH([nested-dir],[nested proxy dir],[NESTED_DIR],[$$HOME/Videos])
 CHECK_WITH([snap-dir],[snapshot/grabshot dir],[SNAP_DIR],[$$HOME/Pictures])
 CHECK_WITH([config-dir],[.bcast config dir],[CONFIG_DIR],[$$HOME/.bcast5])
 CHECK_WITH([nested-dir],[nested proxy dir],[NESTED_DIR],[$$HOME/Videos])
 CHECK_WITH([snap-dir],[snapshot/grabshot dir],[SNAP_DIR],[$$HOME/Pictures])
@@ -538,8 +536,6 @@ CHECK_LIB([XEXT], [Xext], [XShmQueryExtension])
 CHECK_HEADERS([XEXT], [Xlib XShm extention], [X11/Xlib.h X11/extensions/XShm.h X11/extensions/shape.h])
 CHECK_LIB([XINERAMA], [Xinerama], [XineramaQueryExtension])
 CHECK_HEADERS([XINERAMA], [Xinerama headers], [X11/extensions/Xinerama.h])
 CHECK_HEADERS([XEXT], [Xlib XShm extention], [X11/Xlib.h X11/extensions/XShm.h X11/extensions/shape.h])
 CHECK_LIB([XINERAMA], [Xinerama], [XineramaQueryExtension])
 CHECK_HEADERS([XINERAMA], [Xinerama headers], [X11/extensions/Xinerama.h])
-CHECK_LIB([XV], [Xv], [XvQueryExtension])
-CHECK_HEADERS([XV], [Xlib Xv extention], [X11/Xlib.h X11/extensions/Xvlib.h])
 CHECK_LIB([XFIXES], [Xfixes], [XFixesQueryVersion])
 CHECK_LIB([BZ2], [bz2], [BZ2_bzDecompress])
 CHECK_LIB([FONTCONFIG], [fontconfig], [FcInit])
 CHECK_LIB([XFIXES], [Xfixes], [XFixesQueryVersion])
 CHECK_LIB([BZ2], [bz2], [BZ2_bzDecompress])
 CHECK_LIB([FONTCONFIG], [fontconfig], [FcInit])
@@ -650,6 +646,10 @@ CHECK_WANT([GL], [auto], [use opengl], [
  CHECK_LIB([GL], [GLU], [gluOrtho2D])
  CHECK_HEADERS([GL], [opengl headers], [GL/gl.h GL/glext.h GL/glu.h GL/glx.h])])
 
  CHECK_LIB([GL], [GLU], [gluOrtho2D])
  CHECK_HEADERS([GL], [opengl headers], [GL/gl.h GL/glext.h GL/glu.h GL/glx.h])])
 
+CHECK_WANT([XV], [auto], [use xv], [
+ CHECK_LIB([xv], [Xv], [XvQueryExtension])
+ CHECK_HEADERS([xv], [Xlib Xv extention], [X11/Xlib.h X11/extensions/Xvlib.h])])
+
 CHECK_WANT([OSS], [auto], [use OSS audio], [
  CHECK_HEADERS([OSS], [oss headers], [sys/soundcard.h])])
 
 CHECK_WANT([OSS], [auto], [use OSS audio], [
  CHECK_HEADERS([OSS], [oss headers], [sys/soundcard.h])])
 
@@ -690,6 +690,22 @@ CHECK_WANT([ESOUND], [no], [use esd], [
  CHECK_LIB([audiofile], [audiofile], [afOpenFile])
  CHECK_HEADERS([audiofile], [audiofile headers], [audiofile.h])])
 
  CHECK_LIB([audiofile], [audiofile], [afOpenFile])
  CHECK_HEADERS([audiofile], [audiofile headers], [audiofile.h])])
 
+CHECK_WANT([PULSE], [auto], [use pulseaudio], [
+ CHECK_LIB([pulse_simple], [pulse-simple], [pa_simple_new])
+ CHECK_HEADERS([pulse_simple], [pulse-simple headers], [pulse/simple.h])
+ CHECK_LIB([pulse], [pulse], [pa_context_new])
+ CHECK_HEADERS([pulse], [pulse headers], [pulse/error.h])])
+
+CHECK_WANT([ISOFS], [auto], [use isofs], [
+ CHECK_HEADERS([isofs], [isofs headers], [linux/isofs.h])])
+
+if test "x$WANT_LADSPA_BUILD" != "xyes" ; then
+ CHECK_WANT([LADSPA], [auto], [ladspa plugin clients], [
+  CHECK_HEADERS([ladspa], [ladspa headers], [ladspa.h])])
+else
+ WANT_LADSPA=yes
+fi
+
 CHECK_WANT([SHUTTLE], [yes], [shuttle dev support], [
  CHECK_HEADERS([keysyms], [x11 keysym defs], [X11/keysymdef.h])])
 if test "x$WANT_SHUTTLE" = "xno"; then
 CHECK_WANT([SHUTTLE], [yes], [shuttle dev support], [
  CHECK_HEADERS([keysyms], [x11 keysym defs], [X11/keysymdef.h])])
 if test "x$WANT_SHUTTLE" = "xno"; then
@@ -888,9 +904,9 @@ echo ""
 if test "x$WANT_CIN_3RDPARTY" != "xno"; then
   CFG_CFLAGS+=" -DHAVE_CIN_3RDPARTY"
 fi
 if test "x$WANT_CIN_3RDPARTY" != "xno"; then
   CFG_CFLAGS+=" -DHAVE_CIN_3RDPARTY"
 fi
-for v in GL XFT XXF86VM OSS ALSA FIREWIRE DV DVB \
-        VIDEO4LINUX2 ESOUND PACTL OPENEXR LV2 \
-        COMMERCIAL LIBZMPEG SHUTTLE SHUTTLE_USB \
+for v in GL XFT XXF86VM OSS ALSA FIREWIRE DV DVB LADSPA \
+        VIDEO4LINUX2 ESOUND PULSE PACTL OPENEXR LV2 \
+        COMMERCIAL LIBZMPEG SHUTTLE SHUTTLE_USB XV \
         VAAPI VDPAU CUDA NV WINTV X10TV; do
   eval vv="\$WANT_$v"
   if test "x$vv" != "xno"; then
         VAAPI VDPAU CUDA NV WINTV X10TV; do
   eval vv="\$WANT_$v"
   if test "x$vv" != "xno"; then
@@ -1071,6 +1087,22 @@ if test "x$CFG_LDFLAGS" != "x" ; then
   echo ""
 fi
 
   echo ""
 fi
 
+if test "x$CYGWIN" != "x" ; then
+  echo 'FF_DIR ?= /usr/local'
+  echo 'CFLAGS += -I$(FF_DIR)/include'
+  echo 'LDFLAGS += -L$(FF_DIR)/lib'
+  echo ""
+  echo "CFLAGS += -DNO_BTRACE"
+  echo "CFLAGS += -DNO_GDB"
+  echo "CFLAGS += -DNO_CTX"
+  echo "CFLAGS += -DNO_PRCTL"
+  echo "CFLAGS += -DNO_TID"
+  echo "CFLAGS += -DNO_XSELECT"
+  echo ""
+else
+  LDFLAGS+=" -z noexecstack"
+fi
+
 if test "x$WANT_X264_HIDEPTH" = "xyes" ; then
   X264_CFG_PARAMS="$X264_CFG_PARAMS --bit-depth=10"
 fi
 if test "x$WANT_X264_HIDEPTH" = "xyes" ; then
   X264_CFG_PARAMS="$X264_CFG_PARAMS --bit-depth=10"
 fi
@@ -1153,3 +1185,4 @@ fi
 if test "x$X265_CFG_PARAMS" != "x" ; then
   echo "x265.cfg_params :=$X265_CFG_PARAMS -DENABLE_SHARED=no"
 fi
 if test "x$X265_CFG_PARAMS" != "x" ; then
   echo "x265.cfg_params :=$X265_CFG_PARAMS -DENABLE_SHARED=no"
 fi
+
index 2d8b621fd2aee04fa71406e418a9b08649506aef..81842bbb30850a88a14305129f58fb572611b81b 100644 (file)
 
 #include <string.h>
 #include <unistd.h>
 
 #include <string.h>
 #include <unistd.h>
+
+#ifdef HAVE_XV
 #include <X11/extensions/Xvlib.h>
 #include <X11/extensions/Xvlib.h>
+#endif
 
 int BC_Bitmap::max_active_buffers = 0;
 int BC_Bitmap::zombies = 0;
 
 int BC_Bitmap::max_active_buffers = 0;
 int BC_Bitmap::zombies = 0;
@@ -124,6 +127,8 @@ void BC_Bitmap::reque(BC_BitmapImage *bfr)
        avail_lock->unlock();
 }
 
        avail_lock->unlock();
 }
 
+
+#ifdef HAVE_XV
 BC_XvShmImage::BC_XvShmImage(BC_Bitmap *bitmap, int index,
        int w, int h, int color_model)
  : BC_BitmapImage(bitmap, index)
 BC_XvShmImage::BC_XvShmImage(BC_Bitmap *bitmap, int index,
        int w, int h, int color_model)
  : BC_BitmapImage(bitmap, index)
@@ -166,6 +171,7 @@ BC_XvShmImage::~BC_XvShmImage()
        XShmDetach(top_level->display, &shm_info);
        shmdt(shm_info.shmaddr);
 }
        XShmDetach(top_level->display, &shm_info);
        shmdt(shm_info.shmaddr);
 }
+#endif
 
 
 BC_XShmImage::BC_XShmImage(BC_Bitmap *bitmap, int index,
 
 
 BC_XShmImage::BC_XShmImage(BC_Bitmap *bitmap, int index,
@@ -211,6 +217,7 @@ BC_XShmImage::~BC_XShmImage()
 
 
 
 
 
 
+#ifdef HAVE_XV
 BC_XvImage::BC_XvImage(BC_Bitmap *bitmap, int index,
        int w, int h, int color_model)
  : BC_BitmapImage(bitmap, index)
 BC_XvImage::BC_XvImage(BC_Bitmap *bitmap, int index,
        int w, int h, int color_model)
  : BC_BitmapImage(bitmap, index)
@@ -237,6 +244,7 @@ BC_XvImage::~BC_XvImage()
 {
        XFree(xv_image);
 }
 {
        XFree(xv_image);
 }
+#endif
 
 
 BC_XImage::BC_XImage(BC_Bitmap *bitmap, int index,
 
 
 BC_XImage::BC_XImage(BC_Bitmap *bitmap, int index,
@@ -371,13 +379,16 @@ BC_BitmapImage *BC_Bitmap::new_buffer(int type, int idx)
        BC_BitmapImage *buffer = 0;
        if( idx < 0 ) {
                if( type == bmXShmImage ) type = bmXImage;
        BC_BitmapImage *buffer = 0;
        if( idx < 0 ) {
                if( type == bmXShmImage ) type = bmXImage;
+#ifdef HAVE_XV
                else if( type ==  bmXvShmImage ) type = bmXvImage;
                else if( type ==  bmXvShmImage ) type = bmXvImage;
+#endif
        }
        switch( type ) {
        default:
        case bmXImage:
                buffer = new BC_XImage(this, idx, w, h, color_model);
                break;
        }
        switch( type ) {
        default:
        case bmXImage:
                buffer = new BC_XImage(this, idx, w, h, color_model);
                break;
+#ifdef HAVE_XV
        case bmXvImage:
                buffer = new BC_XvImage(this, idx, w, h, color_model);
                break;
        case bmXvImage:
                buffer = new BC_XvImage(this, idx, w, h, color_model);
                break;
@@ -387,6 +398,7 @@ BC_BitmapImage *BC_Bitmap::new_buffer(int type, int idx)
        case bmXvShmImage:
                buffer = new BC_XvShmImage(this, idx, w, h, color_model);
                break;
        case bmXvShmImage:
                buffer = new BC_XvShmImage(this, idx, w, h, color_model);
                break;
+#endif
        }
        if( buffer->is_zombie() ) ++zombies;
        return buffer;
        }
        if( buffer->is_zombie() ) ++zombies;
        return buffer;
@@ -445,11 +457,19 @@ int BC_Bitmap::allocate_data()
                else if( bsz >= 0x400000 ) max_buffer_count /= 8;
                else if( bsz >= 0x100000 ) max_buffer_count /= 4;
                else if( bsz >= 0x10000 ) max_buffer_count /= 2;
                else if( bsz >= 0x400000 ) max_buffer_count /= 8;
                else if( bsz >= 0x100000 ) max_buffer_count /= 4;
                else if( bsz >= 0x10000 ) max_buffer_count /= 2;
-               type = hardware_scaling() ? bmXvShmImage : bmXShmImage;
+               type =
+#ifdef HAVE_XV
+                       hardware_scaling() ? bmXvShmImage :
+#endif
+                       bmXShmImage;
                count = MIN_BITMAP_BUFFERS;
        }
        else // use unshared memory.
                count = MIN_BITMAP_BUFFERS;
        }
        else // use unshared memory.
-               type = hardware_scaling() ? bmXvImage : bmXImage;
+               type =
+#ifdef HAVE_XV
+                       hardware_scaling() ? bmXvImage :
+#endif
+                       bmXImage;
        update_buffers(count);
        return 0;
 }
        update_buffers(count);
        return 0;
 }
@@ -531,6 +551,7 @@ int BC_XShmImage::write_drawable(Drawable &pixmap, GC &gc,
        return 0;
 }
 
        return 0;
 }
 
+#ifdef HAVE_XV
 int BC_XvImage::write_drawable(Drawable &pixmap, GC &gc,
        int source_x, int source_y, int source_w, int source_h,
        int dest_x, int dest_y, int dest_w, int dest_h)
 int BC_XvImage::write_drawable(Drawable &pixmap, GC &gc,
        int source_x, int source_y, int source_w, int source_h,
        int dest_x, int dest_y, int dest_w, int dest_h)
@@ -552,6 +573,7 @@ int BC_XvShmImage::write_drawable(Drawable &pixmap, GC &gc,
                dest_x, dest_y, dest_w, dest_h, bitmap->shm_reply);
        return 0;
 }
                dest_x, dest_y, dest_w, dest_h, bitmap->shm_reply);
        return 0;
 }
+#endif
 
 int BC_Bitmap::write_drawable(Drawable &pixmap, GC &gc,
                int source_x, int source_y, int source_w, int source_h,
 
 int BC_Bitmap::write_drawable(Drawable &pixmap, GC &gc,
                int source_x, int source_y, int source_w, int source_h,
index f065000ac77c39222019f58363ded3abfb56e12d..95b586842f53ec7e4c7815946d76264dd313109f 100644 (file)
 #include <sys/ipc.h>
 #include <sys/shm.h>
 #include <X11/extensions/XShm.h>
 #include <sys/ipc.h>
 #include <sys/shm.h>
 #include <X11/extensions/XShm.h>
+#ifdef HAVE_XV
 #include <X11/extensions/Xvlib.h>
 #include <X11/extensions/Xvlib.h>
+#else
+typedef struct _XvImage XvImage;
+#endif
 
 #include "bcwindowbase.inc"
 #include "bcbitmap.inc"
 
 #include "bcwindowbase.inc"
 #include "bcbitmap.inc"
@@ -58,8 +62,10 @@ class BC_BitmapImage : public ListItem<BC_BitmapImage> {
        friend class BC_Bitmap;
        friend class BC_XImage;
        friend class BC_XShmImage;
        friend class BC_Bitmap;
        friend class BC_XImage;
        friend class BC_XShmImage;
+#ifdef HAVE_XV
        friend class BC_XvImage;
        friend class BC_XvShmImage;
        friend class BC_XvImage;
        friend class BC_XvShmImage;
+#endif
        friend class BC_ActiveBitmaps;
 protected:
        int read_frame_rgb(VFrame* frame);
        friend class BC_ActiveBitmaps;
 protected:
        int read_frame_rgb(VFrame* frame);
@@ -122,6 +128,7 @@ public:
        int read_drawable(Drawable &pixmap, int source_x, int source_y);
 };
 
        int read_drawable(Drawable &pixmap, int source_x, int source_y);
 };
 
+#ifdef HAVE_XV
 class BC_XvImage : public BC_BitmapImage {
        long xv_offset(int i) { return xv_image->offsets[i]; }
        unsigned char* xv_plane(int i) { return get_data() + xv_offset(i); }
 class BC_XvImage : public BC_BitmapImage {
        long xv_offset(int i) { return xv_image->offsets[i]; }
        unsigned char* xv_plane(int i) { return get_data() + xv_offset(i); }
@@ -151,15 +158,17 @@ public:
                int source_x, int source_y, int source_w, int source_h,
                int dest_x, int dest_y, int dest_w, int dest_h);
 };
                int source_x, int source_y, int source_w, int source_h,
                int dest_x, int dest_y, int dest_w, int dest_h);
 };
-
+#endif
 
 
 class BC_Bitmap
 {
        friend class BC_XImage;
        friend class BC_XShmImage;
 
 
 class BC_Bitmap
 {
        friend class BC_XImage;
        friend class BC_XShmImage;
+#ifdef HAVE_XV
        friend class BC_XvImage;
        friend class BC_XvShmImage;
        friend class BC_XvImage;
        friend class BC_XvShmImage;
+#endif
        friend class BC_BitmapImage;
        friend class BC_ActiveBitmaps;
        int buffer_count, max_buffer_count;
        friend class BC_BitmapImage;
        friend class BC_ActiveBitmaps;
        int buffer_count, max_buffer_count;
index aa3b2f0800fd6f432bfc1b4ee073c67a0658e5ce..7fa70fcb48aa7c4eb40a5975c01f5f05d8f7db43 100644 (file)
@@ -113,18 +113,24 @@ void BC_Clipboard::run()
        XEvent event;
        int done = 0;
 #ifndef SINGLE_THREAD
        XEvent event;
        int done = 0;
 #ifndef SINGLE_THREAD
+#ifndef NO_XSELECT
        int x_fd = ConnectionNumber(out_display);
        int x_fd = ConnectionNumber(out_display);
+#endif
 #endif
 
        while(!done) {
 #ifndef SINGLE_THREAD
 // see bcwindowevents.C regarding XNextEvent
 #endif
 
        while(!done) {
 #ifndef SINGLE_THREAD
 // see bcwindowevents.C regarding XNextEvent
+#ifndef NO_XSELECT
                fd_set x_fds;
                FD_ZERO(&x_fds);
                FD_SET(x_fd, &x_fds);
                struct timeval tv;
                tv.tv_sec = 0;  tv.tv_usec = 200000;
                select(x_fd + 1, &x_fds, 0, 0, &tv);
                fd_set x_fds;
                FD_ZERO(&x_fds);
                FD_SET(x_fd, &x_fds);
                struct timeval tv;
                tv.tv_sec = 0;  tv.tv_usec = 200000;
                select(x_fd + 1, &x_fds, 0, 0, &tv);
+#else
+               usleep(100000);
+#endif
                XLockDisplay(out_display);
 
                while( XPending(out_display) ) {
                XLockDisplay(out_display);
 
                while( XPending(out_display) ) {
index c68e39a46bd7c2f5aedbcab431f59b2d11cca7b4..ffc8a1c156d4062adb38c80846620cb2f9e00080 100644 (file)
 #include "bckeyboard.h"
 #include "bcresources.h"
 #include "cstrdup.h"
 #include "bckeyboard.h"
 #include "bcresources.h"
 #include "cstrdup.h"
+#include "filesystem.h"
 
 #include <ctype.h>
 #include <dirent.h>
 
 #include <ctype.h>
 #include <dirent.h>
+#ifndef NO_BTRACE
 #include <execinfo.h>
 #include <execinfo.h>
+#endif
 #include <fcntl.h>
 #include <pwd.h>
 #include <stdio.h>
 #include <fcntl.h>
 #include <pwd.h>
 #include <stdio.h>
@@ -37,7 +40,9 @@
 #include <sys/stat.h>
 #include <unistd.h>
 #include <sys/ioctl.h>
 #include <sys/stat.h>
 #include <unistd.h>
 #include <sys/ioctl.h>
+#ifndef NO_PRCTL
 #include <sys/prctl.h>
 #include <sys/prctl.h>
+#endif
 #include <sys/types.h>
 
 BC_Signals* BC_Signals::global_signals = 0;
 #include <sys/types.h>
 
 BC_Signals* BC_Signals::global_signals = 0;
@@ -182,6 +187,7 @@ static const char* signal_titles[] =
 
 void BC_Signals::dump_stack(FILE *fp)
 {
 
 void BC_Signals::dump_stack(FILE *fp)
 {
+#ifndef NO_BTRACE
        void *buffer[256];
        int total = backtrace (buffer, 256);
        char **result = backtrace_symbols (buffer, total);
        void *buffer[256];
        int total = backtrace (buffer, 256);
        char **result = backtrace_symbols (buffer, total);
@@ -190,6 +196,7 @@ void BC_Signals::dump_stack(FILE *fp)
        {
                fprintf(fp, "%s\n", result[i]);
        }
        {
                fprintf(fp, "%s\n", result[i]);
        }
+#endif
 }
 
 // Kill subprocesses
 }
 
 // Kill subprocesses
@@ -270,15 +277,18 @@ static void signal_entry_recoverable(int signum)
                getpid());
 }
 
                getpid());
 }
 
+#ifndef NO_PRCTL
 // used to terminate child processes when program terminates
 static void handle_exit(int signum)
 {
 //printf("child %d exit\n", getpid());
        exit(0);
 }
 // used to terminate child processes when program terminates
 static void handle_exit(int signum)
 {
 //printf("child %d exit\n", getpid());
        exit(0);
 }
+#endif
 
 void BC_Signals::set_sighup_exit(int enable)
 {
 
 void BC_Signals::set_sighup_exit(int enable)
 {
+#ifndef NO_PRCTL
        if( enable ) {
 // causes SIGHUP to be generated when parent dies
                signal(SIGHUP, handle_exit);
        if( enable ) {
 // causes SIGHUP to be generated when parent dies
                signal(SIGHUP, handle_exit);
@@ -291,6 +301,7 @@ void BC_Signals::set_sighup_exit(int enable)
                signal(SIGHUP, signal_entry);
                prctl(PR_SET_PDEATHSIG, 0,0,0,0);
        }
                signal(SIGHUP, signal_entry);
                prctl(PR_SET_PDEATHSIG, 0,0,0,0);
        }
+#endif
 }
 
 BC_Signals::BC_Signals()
 }
 
 BC_Signals::BC_Signals()
@@ -379,6 +390,7 @@ const char* BC_Signals::sig_to_str(int number)
 }
 
 
 }
 
 
+#ifndef NO_CTX
 #include <ucontext.h>
 #include <sys/wait.h>
 #include "thread.h"
 #include <ucontext.h>
 #include <sys/wait.h>
 #include "thread.h"
@@ -463,6 +475,8 @@ static void reg_dump(FILE *fp,sigregs_t *rp) {}
 #error gotta have IP
 #endif
 
 #error gotta have IP
 #endif
 
+// HAVE_CTX
+#endif
 
 static void handle_dump(int n, siginfo_t * info, void *sc)
 {
 
 static void handle_dump(int n, siginfo_t * info, void *sc)
 {
@@ -474,13 +488,16 @@ static void handle_dump(int n, siginfo_t * info, void *sc)
 // it is not necessary to be root if ptrace is allowed via:
 // echo 0 > /proc/sys/kernel/yama/ptrace_scope (usually set to 1)
 //     if( uid != 0 ) return;
 // it is not necessary to be root if ptrace is allowed via:
 // echo 0 > /proc/sys/kernel/yama/ptrace_scope (usually set to 1)
 //     if( uid != 0 ) return;
-       ucontext_t *uc = (ucontext_t *)sc;
        int pid = getpid(), tid = gettid();
        int pid = getpid(), tid = gettid();
+       void *ip = 0;
+#ifndef NO_CTX
+       ucontext_t *uc = (ucontext_t *)sc;
        struct sigregs_t *c = (struct sigregs_t *)&uc->uc_mcontext;
        struct sigregs_t *c = (struct sigregs_t *)&uc->uc_mcontext;
-       uint8_t *ip = (uint8_t *)c->IP;
+       ip = (void *)c->IP;
+#endif
        fprintf(stderr,"** %s at %p in pid %d, tid %d\n",
                n==SIGSEGV? "segv" : n==SIGINT? "intr" : "trap",
        fprintf(stderr,"** %s at %p in pid %d, tid %d\n",
                n==SIGSEGV? "segv" : n==SIGINT? "intr" : "trap",
-               (void*)ip, pid, tid);
+               ip, pid, tid);
        FILE *fp = 0;
        char fn[PATH_MAX];
        if( BC_Signals::trap_path ) {
        FILE *fp = 0;
        char fn[PATH_MAX];
        if( BC_Signals::trap_path ) {
@@ -491,7 +508,7 @@ static void handle_dump(int n, siginfo_t * info, void *sc)
                fprintf(stderr,"writing debug data to %s\n", fn);
                fprintf(fp,"** %s at %p in pid %d, tid %d\n",
                        n==SIGSEGV? "segv" : n==SIGINT? "intr" : "trap",
                fprintf(stderr,"writing debug data to %s\n", fn);
                fprintf(fp,"** %s at %p in pid %d, tid %d\n",
                        n==SIGSEGV? "segv" : n==SIGINT? "intr" : "trap",
-                       (void*)c->IP, pid, tid);
+                       ip, pid, tid);
        }
        else {
                strcpy(fn, "stdout");
        }
        else {
                strcpy(fn, "stdout");
@@ -521,6 +538,7 @@ static void handle_dump(int n, siginfo_t * info, void *sc)
        fprintf(fp,"\nSTATUS:\n");   bc_copy_textfile(INT_MAX, fp,"/proc/%d/status",pid);
        fprintf(fp,"\nFD:\n");       bc_list_openfiles(INT_MAX, fp,"/proc/%d/fd", pid);
        fprintf(fp,"\nMAPS:\n");     bc_copy_textfile(INT_MAX, fp,"/proc/%d/maps",pid);
        fprintf(fp,"\nSTATUS:\n");   bc_copy_textfile(INT_MAX, fp,"/proc/%d/status",pid);
        fprintf(fp,"\nFD:\n");       bc_list_openfiles(INT_MAX, fp,"/proc/%d/fd", pid);
        fprintf(fp,"\nMAPS:\n");     bc_copy_textfile(INT_MAX, fp,"/proc/%d/maps",pid);
+#ifndef NO_CTX
        char proc_mem[64];
        if( tid > 0 && tid != pid )
                sprintf(proc_mem,"/proc/%d/task/%d/mem",pid,tid);
        char proc_mem[64];
        if( tid > 0 && tid != pid )
                sprintf(proc_mem,"/proc/%d/task/%d/mem",pid,tid);
@@ -530,7 +548,7 @@ static void handle_dump(int n, siginfo_t * info, void *sc)
        if( pfd >= 0 ) {
                fprintf(fp,"\nCODE:\n");
                for( int i=-32; i<32; ) {
        if( pfd >= 0 ) {
                fprintf(fp,"\nCODE:\n");
                for( int i=-32; i<32; ) {
-                       uint8_t v;  void *vp = (void *)(ip + i);
+                       uint8_t v;  void *vp = (void *)((char*)ip + i);
                        if( !(i & 7) ) fprintf(fp,"%p:  ", vp);
                        if( pread(pfd,&v,sizeof(v),(off_t)vp) != sizeof(v) ) break;
                        fprintf(fp,"%c%02x", !i ? '>' : ' ', v);
                        if( !(i & 7) ) fprintf(fp,"%p:  ", vp);
                        if( pread(pfd,&v,sizeof(v),(off_t)vp) != sizeof(v) ) break;
                        fprintf(fp,"%c%02x", !i ? '>' : ' ', v);
@@ -541,10 +559,11 @@ static void handle_dump(int n, siginfo_t * info, void *sc)
        }
        else
                fprintf(fp,"err opening: %s, %m\n", proc_mem);
        }
        else
                fprintf(fp,"err opening: %s, %m\n", proc_mem);
-
        reg_dump(fp, c);
        reg_dump(fp, c);
+#endif
        fprintf(fp,"\n\n");
        if( fp != stdout ) fclose(fp);
        fprintf(fp,"\n\n");
        if( fp != stdout ) fclose(fp);
+#ifndef NO_GDB
        char cmd[1024], *cp = cmd;
        cp += sprintf(cp, "exec gdb /proc/%d/exe -p %d --batch --quiet "
                "-ex \"thread apply all info registers\" "
        char cmd[1024], *cp = cmd;
        cp += sprintf(cp, "exec gdb /proc/%d/exe -p %d --batch --quiet "
                "-ex \"thread apply all info registers\" "
@@ -566,5 +585,6 @@ static void handle_dump(int n, siginfo_t * info, void *sc)
        }
         char *const argv[4] = { (char*) "/bin/sh", (char*) "-c", cmd, 0 };
         execvp(argv[0], &argv[0]);
        }
         char *const argv[4] = { (char*) "/bin/sh", (char*) "-c", cmd, 0 };
         execvp(argv[0], &argv[0]);
+#endif
 }
 
 }
 
index 128d514b92a0d5edbf2c1e8467946964753bb124..f300e66ce80b9358db1e796fa72b65834587c39e 100644 (file)
@@ -58,14 +58,14 @@ BC_TextBox::BC_TextBox(int x, int y, int w, int rows,
 }
 
 BC_TextBox::BC_TextBox(int x, int y, int w, int rows,
 }
 
 BC_TextBox::BC_TextBox(int x, int y, int w, int rows,
-       int size, wchar_t *wtext, int has_border, int font)
+       int size, wchr_t *wtext, int has_border, int font)
  : BC_SubWindow(x, y, w, 0, -1)
 {
        is_utf8 = 1;
        skip_cursor = 0;
        reset_parameters(rows, has_border, font, size);
  : BC_SubWindow(x, y, w, 0, -1)
 {
        is_utf8 = 1;
        skip_cursor = 0;
        reset_parameters(rows, has_border, font, size);
-       wdemand(wcslen(wtext));
-       wcsncpy(this->wtext, wtext, wsize);
+       wdemand(wstrlen(wtext));
+       wstrncpy(this->wtext, wtext, wsize);
 }
 
 BC_TextBox::BC_TextBox(int x, int y, int w, int rows,
 }
 
 BC_TextBox::BC_TextBox(int x, int y, int w, int rows,
@@ -79,15 +79,15 @@ BC_TextBox::BC_TextBox(int x, int y, int w, int rows,
 }
 
 BC_TextBox::BC_TextBox(int x, int y, int w, int rows,
 }
 
 BC_TextBox::BC_TextBox(int x, int y, int w, int rows,
-       const wchar_t *wtext, int has_border, int font, int is_utf8)
+       const wchr_t *wtext, int has_border, int font, int is_utf8)
  : BC_SubWindow(x, y, w, 0, -1)
 {
        this->is_utf8 = is_utf8;
        skip_cursor = 0;
        reset_parameters(rows, has_border, font, BCTEXTLEN);
        wsize = BCTEXTLEN;
  : BC_SubWindow(x, y, w, 0, -1)
 {
        this->is_utf8 = is_utf8;
        skip_cursor = 0;
        reset_parameters(rows, has_border, font, BCTEXTLEN);
        wsize = BCTEXTLEN;
-       wtext = new wchar_t[wsize+1];
-       wcsncpy(this->wtext, wtext, wsize);
+       wtext = new wchr_t[wsize+1];
+       wstrncpy(this->wtext, wtext, wsize);
        this->wtext[wsize] = 0;
 }
 
        this->wtext[wsize] = 0;
 }
 
@@ -224,20 +224,20 @@ int BC_TextBox::wtext_update()
                int nsize = tsize > 0 ? tsize : tlen + BCTEXTLEN;
                wdemand(nsize);
                wlen = BC_Resources::encode(src_enc, dst_enc, text, tlen,
                int nsize = tsize > 0 ? tsize : tlen + BCTEXTLEN;
                wdemand(nsize);
                wlen = BC_Resources::encode(src_enc, dst_enc, text, tlen,
-                       (char*)wtext, wsize*sizeof(wchar_t)) / sizeof(wchar_t);
+                       (char*)wtext, wsize*sizeof(wchr_t)) / sizeof(wchr_t);
                dirty = 0;
        }
        wtext[wlen] = 0;
        return wlen;
 }
 
                dirty = 0;
        }
        wtext[wlen] = 0;
        return wlen;
 }
 
-int BC_TextBox::text_update(const wchar_t *wcp, int wsz, char *tcp, int tsz)
+int BC_TextBox::text_update(const wchr_t *wcp, int wsz, char *tcp, int tsz)
 {
        const char *src_enc = BC_Resources::wide_encoding;
        const char *dst_enc = BC_Resources::encoding;
 {
        const char *src_enc = BC_Resources::wide_encoding;
        const char *dst_enc = BC_Resources::encoding;
-       if( wsz < 0 ) wsz = wcslen(wcp);
+       if( wsz < 0 ) wsz = wstrlen(wcp);
        int len = BC_Resources::encode(src_enc, dst_enc,
        int len = BC_Resources::encode(src_enc, dst_enc,
-               (char*)wcp, wsz*sizeof(wchar_t), tcp, tsz);
+               (char*)wcp, wsz*sizeof(wchr_t), tcp, tsz);
        tcp[len] = 0;
        return len;
 }
        tcp[len] = 0;
        return len;
 }
@@ -460,11 +460,11 @@ int BC_TextBox::update(const char *text)
        return 0;
 }
 
        return 0;
 }
 
-int BC_TextBox::update(const wchar_t *wtext)
+int BC_TextBox::update(const wchr_t *wtext)
 {
 {
-       int wtext_len = wcslen(wtext);
+       int wtext_len = wstrlen(wtext);
        wdemand(wtext_len);
        wdemand(wtext_len);
-       wcsncpy(this->wtext, wtext, wsize);
+       wstrncpy(this->wtext, wtext, wsize);
        this->wlen = wtext_len;
        if(highlight_letter1 > wtext_len) highlight_letter1 = wtext_len;
        if(highlight_letter2 > wtext_len) highlight_letter2 = wtext_len;
        this->wlen = wtext_len;
        if(highlight_letter1 > wtext_len) highlight_letter1 = wtext_len;
        if(highlight_letter2 > wtext_len) highlight_letter2 = wtext_len;
@@ -541,7 +541,7 @@ const char* BC_TextBox::get_text()
        return text;
 }
 
        return text;
 }
 
-const wchar_t* BC_TextBox::get_wtext()
+const wchr_t* BC_TextBox::get_wtext()
 {
        wtext_update();
        return wtext;
 {
        wtext_update();
        return wtext;
@@ -664,7 +664,7 @@ void BC_TextBox::draw(int flush)
        for(i=0, k=text_y; i < wtext_len && k < get_h(); k += text_height) {
 // Draw row of text
                row_begin = i;
        for(i=0, k=text_y; i < wtext_len && k < get_h(); k += text_height) {
 // Draw row of text
                row_begin = i;
-               wchar_t *wtext_row = &wtext[i];
+               wchr_t *wtext_row = &wtext[i];
                for( ; i<wtext_len && wtext[i]!='\n'; ++i );
                if( (row_end=i) < wtext_len ) ++i;
 
                for( ; i<wtext_len && wtext[i]!='\n'; ++i );
                if( (row_end=i) < wtext_len ) ++i;
 
@@ -1120,7 +1120,7 @@ int BC_TextBox::repeat_event(int64_t duration)
 void BC_TextBox::default_keypress(int &dispatch_event, int &result)
 {
        int key = top_level->get_keypress(), len;
 void BC_TextBox::default_keypress(int &dispatch_event, int &result)
 {
        int key = top_level->get_keypress(), len;
-       wchar_t *wkeys = top_level->get_wkeystring(&len);
+       wchr_t *wkeys = top_level->get_wkeystring(&len);
        switch( key ) {
        case KPENTER:   key = '\n';     goto kpchr;
        case KPMINUS:   key = '-';      goto kpchr;
        switch( key ) {
        case KPENTER:   key = '\n';     goto kpchr;
        case KPMINUS:   key = '-';      goto kpchr;
@@ -1158,7 +1158,7 @@ int BC_TextBox::keypress_event()
        last_keypress = get_keypress();
 
        if( unicode_active >= 0 ) {
        last_keypress = get_keypress();
 
        if( unicode_active >= 0 ) {
-               wchar_t wch = 0;
+               wchr_t wch = 0;
                int wlen =  -1;
                switch( last_keypress ) {
 //unicode active acitons
                int wlen =  -1;
                switch( last_keypress ) {
 //unicode active acitons
@@ -1642,7 +1642,7 @@ int BC_TextBox::keypress_event()
                                case 'u': case 'U': {
                                        if( shift_down() ) {
                                                unicode_active = ibeam_letter;
                                case 'u': case 'U': {
                                        if( shift_down() ) {
                                                unicode_active = ibeam_letter;
-                                               wchar_t wkey = 'U';
+                                               wchr_t wkey = 'U';
                                                insert_text(&wkey, 1);
                                                find_ibeam(1);
                                                highlight_letter1 = unicode_active;
                                                insert_text(&wkey, 1);
                                                find_ibeam(1);
                                                highlight_letter1 = unicode_active;
@@ -1737,7 +1737,7 @@ int BC_TextBox::wdemand(int len)
 {
        if( wtext && wsize >= len ) return 0;
        int nsize = len + wlen/2 + BCTEXTLEN;
 {
        if( wtext && wsize >= len ) return 0;
        int nsize = len + wlen/2 + BCTEXTLEN;
-       wchar_t *ntext = new wchar_t[nsize+1];
+       wchr_t *ntext = new wchr_t[nsize+1];
        ntext[nsize] = 0;
        memcpy(ntext, wtext, wsize*sizeof(wtext[0]));
        delete [] wtext;  wtext = ntext;  wsize = nsize;
        ntext[nsize] = 0;
        memcpy(ntext, wtext, wsize*sizeof(wtext[0]));
        delete [] wtext;  wtext = ntext;  wsize = nsize;
@@ -1756,9 +1756,9 @@ int BC_TextBox::tdemand(int len)
        return 1;
 }
 
        return 1;
 }
 
-void BC_TextBox::insert_text(const wchar_t *wcp, int len)
+void BC_TextBox::insert_text(const wchr_t *wcp, int len)
 {
 {
-       if( len < 0 ) len = wcslen(wcp);
+       if( len < 0 ) len = wstrlen(wcp);
        int wtext_len = wtext_update();
        wdemand(wtext_len + len + 1);
        if( unicode_active < 0 && highlight_letter1 < highlight_letter2 ) {
        int wtext_len = wtext_update();
        wdemand(wtext_len + len + 1);
        if( unicode_active < 0 && highlight_letter1 < highlight_letter2 ) {
@@ -2101,11 +2101,11 @@ void BC_TextBox::paste_selection(int clipboard_num)
        int len = clipboard_len(clipboard_num);
        if( len > 0 )
        {
        int len = clipboard_len(clipboard_num);
        if( len > 0 )
        {
-               char cstring[len];  wchar_t wstring[len];
+               char cstring[len];  wchr_t wstring[len];
                from_clipboard(cstring, len, clipboard_num);  --len;
 //printf("BC_TextBox::paste_selection %d '%*.*s'\n",len,len,len,cstring);
                len = BC_Resources::encode(BC_Resources::encoding, BC_Resources::wide_encoding,
                from_clipboard(cstring, len, clipboard_num);  --len;
 //printf("BC_TextBox::paste_selection %d '%*.*s'\n",len,len,len,cstring);
                len = BC_Resources::encode(BC_Resources::encoding, BC_Resources::wide_encoding,
-                       cstring,len, (char *)wstring,(len+1)*sizeof(wchar_t)) / sizeof(wchar_t);
+                       cstring,len, (char *)wstring,(len+1)*sizeof(wchr_t)) / sizeof(wchr_t);
                insert_text(wstring, len);
                last_keypress = 0;
        }
                insert_text(wstring, len);
                last_keypress = 0;
        }
@@ -2212,7 +2212,7 @@ BC_ScrollTextBox::BC_ScrollTextBox(BC_WindowBase *parent_window,
 
 BC_ScrollTextBox::BC_ScrollTextBox(BC_WindowBase *parent_window,
        int x, int y, int w, int rows,
 
 BC_ScrollTextBox::BC_ScrollTextBox(BC_WindowBase *parent_window,
        int x, int y, int w, int rows,
-       const wchar_t *default_wtext, int default_size)
+       const wchr_t *default_wtext, int default_size)
 {
        this->parent_window = parent_window;
        this->x = x;
 {
        this->parent_window = parent_window;
        this->x = x;
@@ -2263,7 +2263,7 @@ void BC_ScrollTextBox::update(const char *text)
        update_scrollbars();
 }
 
        update_scrollbars();
 }
 
-void BC_ScrollTextBox::update(const wchar_t *wtext)
+void BC_ScrollTextBox::update(const wchr_t *wtext)
 {
        this->text->update(wtext);
        update_scrollbars();
 {
        this->text->update(wtext);
        update_scrollbars();
@@ -2289,7 +2289,7 @@ int BC_ScrollTextBox::button_release_event()
 
 int BC_ScrollTextBox::get_h() { return text->get_h(); }
 const char *BC_ScrollTextBox::get_text() { return text->get_text(); }
 
 int BC_ScrollTextBox::get_h() { return text->get_h(); }
 const char *BC_ScrollTextBox::get_text() { return text->get_text(); }
-const wchar_t *BC_ScrollTextBox::get_wtext() { return text->get_wtext(); }
+const wchr_t *BC_ScrollTextBox::get_wtext() { return text->get_wtext(); }
 
 int BC_ScrollTextBox::get_buttonpress()
 {
 
 int BC_ScrollTextBox::get_buttonpress()
 {
@@ -2325,10 +2325,10 @@ BC_ScrollTextBoxText::BC_ScrollTextBoxText(BC_ScrollTextBox *gui, const char *te
        this->gui = gui;
 }
 
        this->gui = gui;
 }
 
-BC_ScrollTextBoxText::BC_ScrollTextBoxText(BC_ScrollTextBox *gui, const wchar_t *wtext)
+BC_ScrollTextBoxText::BC_ScrollTextBoxText(BC_ScrollTextBox *gui, const wchr_t *wtext)
  : BC_TextBox(gui->x, gui->y,
        gui->w - get_resources()->vscroll_data[SCROLL_HANDLE_UP]->get_w(),
  : BC_TextBox(gui->x, gui->y,
        gui->w - get_resources()->vscroll_data[SCROLL_HANDLE_UP]->get_w(),
-       gui->rows, gui->default_size, (wchar_t*)wtext, 1, MEDIUMFONT)
+       gui->rows, gui->default_size, (wchr_t*)wtext, 1, MEDIUMFONT)
 {
        this->gui = gui;
 }
 {
        this->gui = gui;
 }
@@ -2469,7 +2469,7 @@ BC_PopupTextBoxText::BC_PopupTextBoxText(BC_PopupTextBox *popup, int x, int y, c
        this->popup = popup;
 }
 
        this->popup = popup;
 }
 
-BC_PopupTextBoxText::BC_PopupTextBoxText(BC_PopupTextBox *popup, int x, int y, const wchar_t *wtext)
+BC_PopupTextBoxText::BC_PopupTextBoxText(BC_PopupTextBox *popup, int x, int y, const wchr_t *wtext)
  : BC_TextBox(x, y, popup->text_w, 1, wtext, BCTEXTLEN)
 {
        this->popup = popup;
  : BC_TextBox(x, y, popup->text_w, 1, wtext, BCTEXTLEN)
 {
        this->popup = popup;
@@ -2569,7 +2569,7 @@ int BC_PopupTextBox::handle_event()
 }
 
 const char *BC_PopupTextBox::get_text() { return textbox->get_text(); }
 }
 
 const char *BC_PopupTextBox::get_text() { return textbox->get_text(); }
-const wchar_t *BC_PopupTextBox::get_wtext() { return textbox->get_wtext(); }
+const wchr_t *BC_PopupTextBox::get_wtext() { return textbox->get_wtext(); }
 int BC_PopupTextBox::get_number() { return list_item; }
 void BC_PopupTextBox::set_number(int v) { list_item = v; }
 int BC_PopupTextBox::get_x() { return x; }
 int BC_PopupTextBox::get_number() { return list_item; }
 void BC_PopupTextBox::set_number(int v) { list_item = v; }
 int BC_PopupTextBox::get_x() { return x; }
@@ -2774,7 +2774,7 @@ const char* BC_TumbleTextBox::get_text()
        return textbox->get_text();
 }
 
        return textbox->get_text();
 }
 
-const wchar_t* BC_TumbleTextBox::get_wtext()
+const wchr_t* BC_TumbleTextBox::get_wtext()
 {
        return textbox->get_wtext();
 }
 {
        return textbox->get_wtext();
 }
index f96446d6ea7bd2a34ea34065e1c451b39226a378..ec4142784788cd96d2d201820c986808643b9d6b 100644 (file)
@@ -55,17 +55,17 @@ class BC_TextBox : public BC_SubWindow
 // may be local fixed/dynamic, or shared fixed ref via set_text
        char *text;
 // always local dynamic
 // may be local fixed/dynamic, or shared fixed ref via set_text
        char *text;
 // always local dynamic
-       wchar_t *wtext;
+       wchr_t *wtext;
 public:
 // size > 0: fixed buffer, size == 0: dynamic buffer
 // size < 0: fixed shared buffer via set_text
        BC_TextBox(int x, int y, int w, int rows, int size, char *text,
                int has_border=1, int font=MEDIUMFONT);
 public:
 // size > 0: fixed buffer, size == 0: dynamic buffer
 // size < 0: fixed shared buffer via set_text
        BC_TextBox(int x, int y, int w, int rows, int size, char *text,
                int has_border=1, int font=MEDIUMFONT);
-       BC_TextBox(int x, int y, int w, int rows, int size, wchar_t *wtext,
+       BC_TextBox(int x, int y, int w, int rows, int size, wchr_t *wtext,
                int has_border=1, int font=MEDIUMFONT);
        BC_TextBox(int x, int y, int w, int rows, const char *text,
                int has_border=1, int font=MEDIUMFONT, int is_utf8=1);
                int has_border=1, int font=MEDIUMFONT);
        BC_TextBox(int x, int y, int w, int rows, const char *text,
                int has_border=1, int font=MEDIUMFONT, int is_utf8=1);
-       BC_TextBox(int x, int y, int w, int rows, const wchar_t *wtext,
+       BC_TextBox(int x, int y, int w, int rows, const wchr_t *wtext,
                int has_border=1, int font=MEDIUMFONT, int is_utf8=1);
        BC_TextBox(int x, int y, int w, int rows, int64_t text,
                int has_border=1, int font=MEDIUMFONT);
                int has_border=1, int font=MEDIUMFONT, int is_utf8=1);
        BC_TextBox(int x, int y, int w, int rows, int64_t text,
                int has_border=1, int font=MEDIUMFONT);
@@ -87,7 +87,7 @@ public:
        void set_selection(int char1, int char2, int ibeam);
        void wset_selection(int char1, int char2, int ibeam);
        int update(const char *text);
        void set_selection(int char1, int char2, int ibeam);
        void wset_selection(int char1, int char2, int ibeam);
        int update(const char *text);
-       int update(const wchar_t *wtext);
+       int update(const wchr_t *wtext);
        int update(int64_t value);
        int update(float value);
        void disable();
        int update(int64_t value);
        int update(float value);
        void disable();
@@ -110,7 +110,7 @@ public:
        int activate();
        int deactivate();
        const char* get_text();
        int activate();
        int deactivate();
        const char* get_text();
-       const wchar_t* get_wtext();
+       const wchr_t* get_wtext();
        void set_text(char *text, int isz);
        int wdemand(int len);
        int tdemand(int len);
        void set_text(char *text, int isz);
        int wdemand(int len);
        int tdemand(int len);
@@ -177,7 +177,7 @@ private:
        void copy_selection(int clipboard_num);
        void paste_selection(int clipboard_num);
        void delete_selection(int letter1, int letter2, int text_len);
        void copy_selection(int clipboard_num);
        void paste_selection(int clipboard_num);
        void delete_selection(int letter1, int letter2, int text_len);
-       void insert_text(const wchar_t *wcp, int len=-1);
+       void insert_text(const wchr_t *wcp, int len=-1);
 // Reformat text according to separators.
 // ibeam_left causes the ibeam to move left.
        int is_separator(const char *txt, int i);
 // Reformat text according to separators.
 // ibeam_left causes the ibeam to move left.
        int is_separator(const char *txt, int i);
@@ -195,7 +195,7 @@ private:
        int tstrcmp(const char *cp);
        char *tstrcpy(const char *cp);
        char *tstrcat(const char *cp);
        int tstrcmp(const char *cp);
        char *tstrcpy(const char *cp);
        char *tstrcat(const char *cp);
-       int text_update(const wchar_t *wcp, int wsz, char *tcp, int tsz);
+       int text_update(const wchr_t *wcp, int wsz, char *tcp, int tsz);
        int wtext_update();
 
 // Top left of text relative to window
        int wtext_update();
 
 // Top left of text relative to window
@@ -257,7 +257,7 @@ class BC_ScrollTextBox
        BC_ScrollTextBoxYScroll *yscroll;
        BC_WindowBase *parent_window;
        const char *default_text;
        BC_ScrollTextBoxYScroll *yscroll;
        BC_WindowBase *parent_window;
        const char *default_text;
-       const wchar_t *default_wtext;
+       const wchr_t *default_wtext;
        int default_size;
        int x, y, w, rows;
 
        int default_size;
        int x, y, w, rows;
 
@@ -270,7 +270,7 @@ public:
                const char *default_text, int default_size=BCTEXTLEN);
         BC_ScrollTextBox(BC_WindowBase *parent_window,
                 int x, int y, int w, int rows,
                const char *default_text, int default_size=BCTEXTLEN);
         BC_ScrollTextBox(BC_WindowBase *parent_window,
                 int x, int y, int w, int rows,
-                const wchar_t *default_wtext, int default_size=BCTEXTLEN);
+                const wchr_t *default_wtext, int default_size=BCTEXTLEN);
        virtual ~BC_ScrollTextBox();
        void create_objects();
 
        virtual ~BC_ScrollTextBox();
        void create_objects();
 
@@ -281,7 +281,7 @@ public:
        void set_text(char *text, int isz);
        int set_text_row(int n);
        void update(const char *text);
        void set_text(char *text, int isz);
        int set_text_row(int n);
        void update(const char *text);
-       void update(const wchar_t *wtext);
+       void update(const wchr_t *wtext);
        void reposition_window(int x, int y, int w, int rows);
        void update_scrollbars();
 // accessors
        void reposition_window(int x, int y, int w, int rows);
        void update_scrollbars();
 // accessors
@@ -295,7 +295,7 @@ public:
 // forward functions
        int get_h();
        const char *get_text();
 // forward functions
        int get_h();
        const char *get_text();
-       const wchar_t *get_wtext();
+       const wchr_t *get_wtext();
        int get_buttonpress();
        void wset_selection(int char1, int char2, int ibeam);
        void set_selection(int char1, int char2, int ibeam);
        int get_buttonpress();
        void wset_selection(int char1, int char2, int ibeam);
        void set_selection(int char1, int char2, int ibeam);
@@ -306,7 +306,7 @@ class BC_ScrollTextBoxText : public BC_TextBox
 {
 public:
        BC_ScrollTextBoxText(BC_ScrollTextBox *gui, const char *text);
 {
 public:
        BC_ScrollTextBoxText(BC_ScrollTextBox *gui, const char *text);
-       BC_ScrollTextBoxText(BC_ScrollTextBox *gui, const wchar_t *wtext);
+       BC_ScrollTextBoxText(BC_ScrollTextBox *gui, const wchr_t *wtext);
        virtual ~BC_ScrollTextBoxText();
        int handle_event();
        int motion_event();
        virtual ~BC_ScrollTextBoxText();
        int handle_event();
        int motion_event();
@@ -351,7 +351,7 @@ public:
        virtual int handle_event();
 
        const char *get_text();
        virtual int handle_event();
 
        const char *get_text();
-       const wchar_t *get_wtext();
+       const wchr_t *get_wtext();
        int get_number();
        void set_number(int v);
        int get_x();
        int get_number();
        void set_number(int v);
        int get_x();
@@ -376,7 +376,7 @@ private:
        int x, y, text_w, list_h;
        int list_format, list_item;
        const char *default_text;
        int x, y, text_w, list_h;
        int list_format, list_item;
        const char *default_text;
-       const wchar_t *default_wtext;
+       const wchr_t *default_wtext;
        ArrayList<BC_ListBoxItem*> *list_items;
        BC_PopupTextBoxText *textbox;
        BC_PopupTextBoxList *listbox;
        ArrayList<BC_ListBoxItem*> *list_items;
        BC_PopupTextBoxText *textbox;
        BC_PopupTextBoxList *listbox;
@@ -387,7 +387,7 @@ class BC_PopupTextBoxText : public BC_TextBox
 {
 public:
        BC_PopupTextBoxText(BC_PopupTextBox *popup, int x, int y, const char *text);
 {
 public:
        BC_PopupTextBoxText(BC_PopupTextBox *popup, int x, int y, const char *text);
-       BC_PopupTextBoxText(BC_PopupTextBox *popup, int x, int y, const wchar_t *wtext);
+       BC_PopupTextBoxText(BC_PopupTextBox *popup, int x, int y, const wchr_t *wtext);
        virtual ~BC_PopupTextBoxText();
        int handle_event();
        BC_PopupTextBox *popup;
        virtual ~BC_PopupTextBoxText();
        int handle_event();
        BC_PopupTextBox *popup;
@@ -428,7 +428,7 @@ public:
        virtual int handle_up_event();
        virtual int handle_down_event();
        const char* get_text();
        virtual int handle_up_event();
        virtual int handle_down_event();
        const char* get_text();
-       const wchar_t* get_wtext();
+       const wchr_t* get_wtext();
        BC_TextBox* get_textbox();
        int update(const char *value);
        int update(int64_t value);
        BC_TextBox* get_textbox();
        int update(const char *value);
        int update(int64_t value);
index 7e453925487b01931c480a541f23f91541b44134..2d08b46babef0c3fe0e2f47eb59e030753b227f6 100644 (file)
@@ -309,7 +309,7 @@ void BC_Trace::dump_traces(FILE *fp)
        }
 }
 
        }
 }
 
-void trace_info::set_owner() { owner = pthread_self(); }
+void trace_info::set_owner() { owner = (unsigned long)pthread_self(); }
 void trace_info::unset_owner() { owner = 0; }
 
 void BC_Trace::dump_locks(FILE *fp)
 void trace_info::unset_owner() { owner = 0; }
 
 void BC_Trace::dump_locks(FILE *fp)
@@ -322,7 +322,7 @@ void BC_Trace::dump_locks(FILE *fp)
                fprintf(fp,"    %p %s, %s %p%s",
                        p->info, p->title, p->loc,
                        (void*)p->tid, p->is_owner ? " *" : "");
                fprintf(fp,"    %p %s, %s %p%s",
                        p->info, p->title, p->loc,
                        (void*)p->tid, p->is_owner ? " *" : "");
-               if( p->info->owner && p->info->owner != p->tid )
+               if( p->info->owner && p->info->owner != (unsigned long)p->tid )
                        fprintf(fp," %p", (void*)p->info->owner);
                fprintf(fp,"\n");
        }
                        fprintf(fp," %p", (void*)p->info->owner);
                fprintf(fp,"\n");
        }
index 9a730f9541b9697b1b0b4266da3859f77e04ff36..a35645ad05d707ecac9c1d2b68b33d8c86530a3e 100644 (file)
@@ -57,7 +57,9 @@
 #include <typeinfo>
 
 #include <X11/extensions/Xinerama.h>
 #include <typeinfo>
 
 #include <X11/extensions/Xinerama.h>
+#ifdef HAVE_XV
 #include <X11/extensions/Xvlib.h>
 #include <X11/extensions/Xvlib.h>
+#endif
 #include <X11/extensions/shape.h>
 #include <X11/XF86keysym.h>
 #include <X11/Sunkeysym.h>
 #include <X11/extensions/shape.h>
 #include <X11/XF86keysym.h>
 #include <X11/Sunkeysym.h>
@@ -205,9 +207,10 @@ BC_WindowBase::~BC_WindowBase()
                        XFree(xinerama_info);
                xinerama_screens = 0;
                xinerama_info = 0;
                        XFree(xinerama_info);
                xinerama_screens = 0;
                xinerama_info = 0;
+#ifdef HAVE_XV
                if( xvideo_port_id >= 0 )
                        XvUngrabPort(display, xvideo_port_id, CurrentTime);
                if( xvideo_port_id >= 0 )
                        XvUngrabPort(display, xvideo_port_id, CurrentTime);
-
+#endif
                unlock_window();
 // Must be last reference to display.
 // _XftDisplayInfo needs a lock.
                unlock_window();
 // Must be last reference to display.
 // _XftDisplayInfo needs a lock.
@@ -869,8 +872,11 @@ int BC_WindowBase::keysym_lookup(XEvent *event)
        wkey_string_length = 0;
 
        if( input_context ) {
        wkey_string_length = 0;
 
        if( input_context ) {
+               wchar_t wkey[4];
                wkey_string_length = XwcLookupString(input_context,
                wkey_string_length = XwcLookupString(input_context,
-                       (XKeyEvent*)event, wkey_string, 4, &keysym, 0);
+                       (XKeyEvent*)event, wkey, 4, &keysym, 0);
+               for( int i=0; i<wkey_string_length; ++i )
+                       wkey_string[i] = wkey[i];
 //printf("keysym_lookup 1 %d %d %lx %x %x %x %x\n", wkey_string_length, keysym,
 //  wkey_string[0], wkey_string[1], wkey_string[2], wkey_string[3]);
 
 //printf("keysym_lookup 1 %d %d %lx %x %x %x %x\n", wkey_string_length, keysym,
 //  wkey_string[0], wkey_string[1], wkey_string[2], wkey_string[3]);
 
@@ -2421,7 +2427,7 @@ void BC_WindowBase::init_glyphs()
                "`abcdefghijklmnopqrstuvwxyz{|}~");
        for( int font=SMALLFONT; font<=LARGEFONT; ++font ) {
                set_font(font);
                "`abcdefghijklmnopqrstuvwxyz{|}~");
        for( int font=SMALLFONT; font<=LARGEFONT; ++font ) {
                set_font(font);
-               draw_text(5,5, text, 0);
+               draw_text(5,5, text);
        }
        set_font(cur_font);
        XUngrabServer(display);
        }
        set_font(cur_font);
        XUngrabServer(display);
@@ -2944,10 +2950,10 @@ int BC_WindowBase::get_text_width(int font, const char *text, int length)
        return w;
 }
 
        return w;
 }
 
-int BC_WindowBase::get_text_width(int font, const wchar_t *text, int length)
+int BC_WindowBase::get_text_width(int font, const wchr_t *text, int length)
 {
        int i, j, w = 0;
 {
        int i, j, w = 0;
-       if( length < 0 ) length = wcslen(text);
+       if( length < 0 ) length = wstrlen(text);
 
        for( i=j=0; i<length && text[i]; ++i ) {
                if( text[i] != '\n' ) continue;
 
        for( i=j=0; i<length && text[i]; ++i ) {
                if( text[i] != '\n' ) continue;
@@ -3114,6 +3120,7 @@ int BC_WindowBase::accel_available(int color_model, int lock_it)
 
 int BC_WindowBase::grab_port_id(int color_model)
 {
 
 int BC_WindowBase::grab_port_id(int color_model)
 {
+#ifdef HAVE_XV
        if( !get_resources()->use_xvideo ||     // disabled
            !get_resources()->use_shm )         // Only local server is fast enough.
                return -1;
        if( !get_resources()->use_xvideo ||     // disabled
            !get_resources()->use_shm )         // Only local server is fast enough.
                return -1;
@@ -3160,8 +3167,10 @@ int BC_WindowBase::grab_port_id(int color_model)
        }
 
        XvFreeAdaptorInfo(info);
        }
 
        XvFreeAdaptorInfo(info);
-
        return xvideo_port_id;
        return xvideo_port_id;
+#else
+       return -1;
+#endif
 }
 
 
 }
 
 
@@ -4039,7 +4048,7 @@ int BC_WindowBase::ctrl_down()
        return top_level->ctrl_mask;
 }
 
        return top_level->ctrl_mask;
 }
 
-wchar_t* BC_WindowBase::get_wkeystring(int *length)
+wchr_t* BC_WindowBase::get_wkeystring(int *length)
 {
        if(length)
                *length = top_level->wkey_string_length;
 {
        if(length)
                *length = top_level->wkey_string_length;
index 7e36cd67131e341a69715b2b7cb856db12c0102e..6ce2128d9c372c134b8a6ec701a7b6bd6871d1a0 100644 (file)
 //typedef void* GLXContext;
 #endif
 
 //typedef void* GLXContext;
 #endif
 
+typedef uint32_t wchr_t;
+
+static inline size_t wstrlen(const wchr_t *s)
+{
+       size_t len = 0;
+       while( s[len] ) ++len;
+       return len;
+}
+
+static inline wchr_t *wstrncpy(wchr_t *dest, const wchr_t *src, size_t n)
+{
+       for( wchr_t *dp=dest; n>0 && (*dp++=*src++); --n );
+       return dest;
+}
+
+
 class BC_ResizeCall
 {
 public:
 class BC_ResizeCall
 {
 public:
@@ -313,7 +329,7 @@ public:
        int get_buttonpress();
        int get_has_focus();
        int get_dragging();
        int get_buttonpress();
        int get_has_focus();
        int get_dragging();
-       wchar_t* get_wkeystring(int *length = 0);
+       wchr_t* get_wkeystring(int *length = 0);
        int get_keypress();
        int get_keysym() { return keysym; }
 #ifdef X_HAVE_UTF8_STRING
        int get_keypress();
        int get_keysym() { return keysym; }
 #ifdef X_HAVE_UTF8_STRING
@@ -341,7 +357,7 @@ public:
        int get_text_descent(int font);
        int get_text_height(int font, const char *text = 0);
        int get_text_width(int font, const char *text, int length = -1);
        int get_text_descent(int font);
        int get_text_height(int font, const char *text = 0);
        int get_text_width(int font, const char *text, int length = -1);
-       int get_text_width(int font, const wchar_t *text, int length = -1);
+       int get_text_width(int font, const wchr_t *text, int length = -1);
 // truncate the text with ... & return a new string
        char *get_truncated_text(int font, const char *text, int max_w);
        BC_Clipboard* get_clipboard();
 // truncate the text with ... & return a new string
        char *get_truncated_text(int font, const char *text, int max_w);
        BC_Clipboard* get_clipboard();
@@ -405,10 +421,10 @@ public:
        void draw_text_line(int x, int y, const char *text, int len, BC_Pixmap *pixmap = 0);
        void draw_xft_text(int x, int y, const char *text, int len,
                BC_Pixmap *pixmap = 0, int is_utf8 = 0);
        void draw_text_line(int x, int y, const char *text, int len, BC_Pixmap *pixmap = 0);
        void draw_xft_text(int x, int y, const char *text, int len,
                BC_Pixmap *pixmap = 0, int is_utf8 = 0);
-       void draw_xft_text(int x, int y, const wchar_t *text,
+       void draw_xft_text(int x, int y, const wchr_t *text,
                int length, BC_Pixmap *pixmap);
        int draw_single_text(int draw, int font,
                int length, BC_Pixmap *pixmap);
        int draw_single_text(int draw, int font,
-               int x, int y, const wchar_t *text, int length = -1, BC_Pixmap *pixmap = 0);
+               int x, int y, const wchr_t *text, int length = -1, BC_Pixmap *pixmap = 0);
        void draw_center_text(int x, int y, const char *text, int length = -1);
        void draw_line(int x1, int y1, int x2, int y2, BC_Pixmap *pixmap = 0);
        void draw_polygon(ArrayList<int> *x, ArrayList<int> *y, BC_Pixmap *pixmap = 0);
        void draw_center_text(int x, int y, const char *text, int length = -1);
        void draw_line(int x1, int y1, int x2, int y2, BC_Pixmap *pixmap = 0);
        void draw_polygon(ArrayList<int> *x, ArrayList<int> *y, BC_Pixmap *pixmap = 0);
@@ -574,7 +590,7 @@ private:
        Cursor create_grab_cursor();
 // Get width of a single line.  Used by get_text_width
        int get_single_text_width(int font, const char *text, int length);
        Cursor create_grab_cursor();
 // Get width of a single line.  Used by get_text_width
        int get_single_text_width(int font, const char *text, int length);
-       int get_single_text_width(int font, const wchar_t *text, int length);
+       int get_single_text_width(int font, const wchr_t *text, int length);
        int allocate_color_table();
        int init_gc();
        int init_fonts();
        int allocate_color_table();
        int init_gc();
        int init_fonts();
@@ -724,7 +740,7 @@ private:
 // Last key pressed
        int key_pressed;
        int wkey_string_length;
 // Last key pressed
        int key_pressed;
        int wkey_string_length;
-       wchar_t wkey_string[4];
+       wchr_t wkey_string[4];
 #ifdef X_HAVE_UTF8_STRING
        char* key_pressed_utf8;
 #endif
 #ifdef X_HAVE_UTF8_STRING
        char* key_pressed_utf8;
 #endif
index ab44e7cc9b5fec47a9b49e9b6bbd70614d7e61f0..eb35b63e7ca34e2cf0fed664a641e2926d24b187 100644 (file)
@@ -211,21 +211,21 @@ void BC_WindowBase::draw_xft_text(int x, int y,
        const char *text, int length, BC_Pixmap *pixmap, int is_utf8)
 {
        int l = length + 1;
        const char *text, int length, BC_Pixmap *pixmap, int is_utf8)
 {
        int l = length + 1;
-       wchar_t wide_text[l];
+       wchr_t wide_text[l];
        length = BC_Resources::encode(
                is_utf8 ? "UTF8" : BC_Resources::encoding, BC_Resources::wide_encoding,
        length = BC_Resources::encode(
                is_utf8 ? "UTF8" : BC_Resources::encoding, BC_Resources::wide_encoding,
-               (char*)text, length, (char*)wide_text, l*sizeof(wchar_t)) / sizeof(wchar_t);
+               (char*)text, length, (char*)wide_text, l*sizeof(wchr_t)) / sizeof(wchr_t);
        draw_xft_text(x, y, wide_text, length, pixmap);
 }
 
 void BC_WindowBase::draw_xft_text(int x, int y,
        draw_xft_text(x, y, wide_text, length, pixmap);
 }
 
 void BC_WindowBase::draw_xft_text(int x, int y,
-       const wchar_t *text, int length, BC_Pixmap *pixmap)
+       const wchr_t *text, int length, BC_Pixmap *pixmap)
 {
        int dy = -1;
 {
        int dy = -1;
-       const wchar_t *wsp = text, *wep = wsp + length;
+       const wchr_t *wsp = text, *wep = wsp + length;
        int font = top_level->current_font;
        while( wsp < wep ) {
        int font = top_level->current_font;
        while( wsp < wep ) {
-               const wchar_t *wcp = wsp;
+               const wchr_t *wcp = wsp;
                while( wcp < wep && *wcp != '\n' ) ++wcp;
                int len = wcp - wsp;
                if( len > 0 )
                while( wcp < wep && *wcp != '\n' ) ++wcp;
                int len = wcp - wsp;
                if( len > 0 )
@@ -272,16 +272,16 @@ void BC_WindowBase::xft_draw_string(XftColor *xft_color, XftFont *xft_font,
        }
 }
 
        }
 }
 
-int BC_WindowBase::get_single_text_width(int font, const wchar_t *text, int length)
+int BC_WindowBase::get_single_text_width(int font, const wchr_t *text, int length)
 {
        return draw_single_text(0, font, 0,0, text, length);
 }
 
 int BC_WindowBase::draw_single_text(int draw, int font,
 {
        return draw_single_text(0, font, 0,0, text, length);
 }
 
 int BC_WindowBase::draw_single_text(int draw, int font,
-       int x, int y, const wchar_t *text, int length, BC_Pixmap *pixmap)
+       int x, int y, const wchr_t *text, int length, BC_Pixmap *pixmap)
 {
        if( length < 0 )
 {
        if( length < 0 )
-               length = wcslen(text);
+               length = wstrlen(text);
        if( !length ) return 0;
 
        if( !get_resources()->use_xft ) {
        if( !length ) return 0;
 
        if( !get_resources()->use_xft ) {
@@ -319,7 +319,7 @@ int BC_WindowBase::draw_single_text(int draw, int font,
        int x0 = x;
        XftFont *basefont = top_level->get_xft_struct(font);
        XftFont *curfont = 0, *altfont = 0;
        int x0 = x;
        XftFont *basefont = top_level->get_xft_struct(font);
        XftFont *curfont = 0, *altfont = 0;
-       const wchar_t *up = text, *ubp = up, *uep = ubp + length;
+       const wchr_t *up = text, *ubp = up, *uep = ubp + length;
 
        while( up < uep ) {
                XftFont *xft_font = 0;
 
        while( up < uep ) {
                XftFont *xft_font = 0;
index fa79458aab5d3a86a8c7b7857625cfa640fe0dbe..f05665f076312b5582a440230e362f0fca2ddb92 100644 (file)
@@ -74,7 +74,9 @@ void BC_WindowEvents::run()
 // listening anymore and XCloseDisplay locks up.
        XEvent *event;
 #ifndef SINGLE_THREAD
 // listening anymore and XCloseDisplay locks up.
        XEvent *event;
 #ifndef SINGLE_THREAD
+#ifndef NO_XSELECT
        int x_fd = ConnectionNumber(window->display);
        int x_fd = ConnectionNumber(window->display);
+#endif
 #endif
 
        while(!done)
 #endif
 
        while(!done)
@@ -89,6 +91,7 @@ void BC_WindowEvents::run()
 // This came from a linuxquestions post.
 // We can get a file descriptor for the X display & use select instead of XNextEvent.
 // The newest X11 library requires locking the display to use XNextEvent.
 // This came from a linuxquestions post.
 // We can get a file descriptor for the X display & use select instead of XNextEvent.
 // The newest X11 library requires locking the display to use XNextEvent.
+#ifndef NO_XSELECT
                fd_set x_fds;
                FD_ZERO(&x_fds);
                FD_SET(x_fd, &x_fds);
                fd_set x_fds;
                FD_ZERO(&x_fds);
                FD_SET(x_fd, &x_fds);
@@ -96,6 +99,9 @@ void BC_WindowEvents::run()
                tv.tv_sec = 0;  tv.tv_usec = 200000;
 //printf("BC_WindowEvents::run %d %s\n", __LINE__, window->title);
                select(x_fd + 1, &x_fds, 0, 0, &tv);
                tv.tv_sec = 0;  tv.tv_usec = 200000;
 //printf("BC_WindowEvents::run %d %s\n", __LINE__, window->title);
                select(x_fd + 1, &x_fds, 0, 0, &tv);
+#else
+               usleep(100000);
+#endif
                XLockDisplay(window->display);
                while(!done && XPending(window->display))
                {
                XLockDisplay(window->display);
                while(!done && XPending(window->display))
                {
index 59227cbe56ecea58ec160a500bc4e82a4a6a3d1c..db95285e4d81539f00dab850a62e570958b8b473 100644 (file)
@@ -4,7 +4,6 @@
 #include <stdarg.h>
 #include <stdint.h>
 #include <string.h>
 #include <stdarg.h>
 #include <stdint.h>
 #include <string.h>
-#include <wctype.h>
 
 static inline char *cstrcat(int n, ...) {
   int len = 0;  va_list va;  va_start(va,n);
 
 static inline char *cstrcat(int n, ...) {
   int len = 0;  va_list va;  va_start(va,n);
@@ -58,23 +57,33 @@ static inline int butf8(unsigned int v, char *&cp)
 }
 
 static inline int bstrcasecmp(const char *ap, const char *bp)
 }
 
 static inline int bstrcasecmp(const char *ap, const char *bp)
-{
-       int a, b, ret;
+{ // not really correct, but what was left after MS port
+       int ret, a, b;
        do {
        do {
-               a = towlower(butf8(ap));  b = towlower(butf8(bp));
+               if( (a=butf8(ap)) >= 'A' && a <= 'Z' ) a += 'a' - 'A';
+               if( (b=butf8(bp)) >= 'A' && b <= 'Z' ) b += 'a' - 'A';
        } while( !(ret=a-b) && a && b );
        return ret;
 }
 
 static inline const char *bstrcasestr(const char *src, const char *tgt)
 {
        } while( !(ret=a-b) && a && b );
        return ret;
 }
 
 static inline const char *bstrcasestr(const char *src, const char *tgt)
 {
-       int ssz = strlen(src), tsz = strlen(tgt), ret = 0;
+       int ssz = strlen(src), tsz = strlen(tgt);
        const char *cp = tgt;
        const char *cp = tgt;
-       wchar_t wtgt[tsz + 1], *tp = wtgt;
-       while( *cp ) *tp++ = towlower(butf8(cp));
+       uint32_t wtgt[tsz+1], *tp = wtgt;
+       while( *cp ) {
+               int wch = butf8(cp);
+               if( wch >= 'A' && wch <= 'Z' ) wch += 'a' - 'A';
+               *tp++ = wch;
+       }
+       *tp = 0;
        for( tsz=tp-wtgt; ssz>=tsz; ++src,--ssz ) {
                cp = src;   tp = wtgt;
        for( tsz=tp-wtgt; ssz>=tsz; ++src,--ssz ) {
                cp = src;   tp = wtgt;
-               for( int i=tsz; --i>=0 && !(ret=towlower(butf8(cp))-*tp); ++tp );
+               int ret = 0, wch = 0;
+               for( int i=tsz; --i>=0 && !ret && (wch=butf8(cp)); ) {
+                       if( wch >= 'A' && wch <= 'Z' ) wch += 'a' - 'A';
+                       ret = wch - *tp++;
+               }
                if( !ret ) return src;
        }
        return 0;
                if( !ret ) return src;
        }
        return 0;
index 7ad81b233b68ac5df1dac76582cf9ef8cc466f02..79f3e713c34bf99d293e96a12f1ae3f32113a78b 100644 (file)
 #include <stdio.h>
 #include <pthread.h>
 #include <unistd.h>
 #include <stdio.h>
 #include <pthread.h>
 #include <unistd.h>
+
+#ifndef NO_TID
 #include <sys/syscall.h>
 
 // glibc >= 2.30 provides gettid() in unistd
 #if !defined(__GLIBC_PREREQ) || !__GLIBC_PREREQ(2, 30)
 static inline int gettid() { return syscall(SYS_gettid, 0, 0, 0); }
 #endif
 #include <sys/syscall.h>
 
 // glibc >= 2.30 provides gettid() in unistd
 #if !defined(__GLIBC_PREREQ) || !__GLIBC_PREREQ(2, 30)
 static inline int gettid() { return syscall(SYS_gettid, 0, 0, 0); }
 #endif
+#else
+static inline long gettid() { return (long)pthread_self(); }
+#endif
 
 // The thread does not autodelete by default.
 // If autodelete is 1 the thread autodeletes.
 
 // The thread does not autodelete by default.
 // If autodelete is 1 the thread autodeletes.
index 6ec5af686540af347e02bf362bc571e7a57f6c0e..c627200d2d0ea52a339aa13922bfb7c28f91d4fd 100644 (file)
@@ -809,7 +809,7 @@ SET_TRACE
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        glDisable(GL_BLEND);
 SET_TRACE
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        glDisable(GL_BLEND);
 SET_TRACE
-       return 0;
 #endif
 #endif
+       return 0;
 }
 
 }
 
index 5737d4cea6a2cb58b17ecf1faa73bbc9bc6daad0..7f84a76910d5f8cb0e8251a9b385eb9958dffa08 100644 (file)
@@ -434,7 +434,7 @@ void DenoiseFFTEffect::collect_noise()
        for(int i = 0; i < config.samples; i += WINDOW_SIZE)
        {
                collect_engine->process_buffer(collection_start,
        for(int i = 0; i < config.samples; i += WINDOW_SIZE)
        {
                collect_engine->process_buffer(collection_start,
-                       WINDOW_SIZE, (Samples*)0, get_direction());
+                       WINDOW_SIZE, (Samples**)0, get_direction());
                collection_start += step * WINDOW_SIZE;
                total_windows++;
        }
                collection_start += step * WINDOW_SIZE;
                total_windows++;
        }
diff --git a/cinelerra-5.1/plugins/mandelcuda/.swp b/cinelerra-5.1/plugins/mandelcuda/.swp
deleted file mode 100644 (file)
index 5d9b1b9..0000000
Binary files a/cinelerra-5.1/plugins/mandelcuda/.swp and /dev/null differ
diff --git a/cinelerra-5.1/plugins/nbodycuda/.swp b/cinelerra-5.1/plugins/nbodycuda/.swp
deleted file mode 100644 (file)
index 5d9b1b9..0000000
Binary files a/cinelerra-5.1/plugins/nbodycuda/.swp and /dev/null differ
index 85e9b30084554ce42f2d1e84eb80f518625dcd3c..b5e196392900da159bae87caa628671dc62e314c 100644 (file)
@@ -1,6 +1,7 @@
 include ../../plugin_defs
 
 OBJS = $(OBJDIR)/shapewipe.o
 include ../../plugin_defs
 
 OBJS = $(OBJDIR)/shapewipe.o
+LFLAGS += -lpng
 
 PLUGIN = shapewipe
 
 
 PLUGIN = shapewipe
 
index 88d65015adf738f85329fcf7ebb1aaedfb243380..0fc66692f9c4d3667b5a6a6963feab52be32237c 100644 (file)
@@ -145,7 +145,7 @@ int TitleConfig::equivalent(TitleConfig &that)
 //             fade_in == that.fade_in && fade_out == that.fade_out &&
 //             EQUIV(pixels_per_second, that.pixels_per_second) &&
                wlen == that.wlen &&
 //             fade_in == that.fade_in && fade_out == that.fade_out &&
 //             EQUIV(pixels_per_second, that.pixels_per_second) &&
                wlen == that.wlen &&
-               !memcmp(wtext, that.wtext, wlen * sizeof(wchar_t)) &&
+               !memcmp(wtext, that.wtext, wlen * sizeof(wchr_t)) &&
                title_x == that.title_x && title_y == that.title_y &&
                title_w == that.title_w && title_h == that.title_h &&
 //             window_w == that.window_w && window_h == that.window_h &&
                title_x == that.title_x && title_y == that.title_y &&
                title_w == that.title_w && title_h == that.title_h &&
 //             window_w == that.window_w && window_h == that.window_h &&
@@ -180,7 +180,7 @@ void TitleConfig::copy_from(TitleConfig &that)
        fade_out = that.fade_out;
        pixels_per_second = that.pixels_per_second;
        demand(wlen = that.wlen);
        fade_out = that.fade_out;
        pixels_per_second = that.pixels_per_second;
        demand(wlen = that.wlen);
-       memcpy(wtext, that.wtext, that.wlen * sizeof(wchar_t));
+       memcpy(wtext, that.wtext, that.wlen * sizeof(wchr_t));
        title_x = that.title_x;  title_y = that.title_y;
        title_w = that.title_w;  title_h = that.title_h;
        window_w = that.window_w;  window_h = that.window_h;
        title_x = that.title_x;  title_y = that.title_y;
        title_w = that.title_w;  title_h = that.title_h;
        window_w = that.window_w;  window_h = that.window_h;
@@ -218,7 +218,7 @@ void TitleConfig::interpolate(TitleConfig &prev, TitleConfig &next,
        fade_out = prev.fade_out;
        pixels_per_second = prev.pixels_per_second;
        demand(wlen = prev.wlen);
        fade_out = prev.fade_out;
        pixels_per_second = prev.pixels_per_second;
        demand(wlen = prev.wlen);
-       memcpy(wtext, prev.wtext, prev.wlen * sizeof(wchar_t));
+       memcpy(wtext, prev.wtext, prev.wlen * sizeof(wchr_t));
        wtext[wlen] = 0;
        this->title_x = prev.title_x == next.title_x ? prev.title_x :
                prev.title_x * prev_scale + next.title_x * next_scale;
        wtext[wlen] = 0;
        this->title_x = prev.title_x == next.title_x ? prev.title_x :
                prev.title_x * prev_scale + next.title_x * next_scale;
@@ -245,7 +245,7 @@ int TitleConfig::demand(long sz)
        if( wtext && wsize >= sz ) return 0;
        delete [] wtext;
        wsize = sz + wlen/2 + 0x1000;
        if( wtext && wsize >= sz ) return 0;
        delete [] wtext;
        wsize = sz + wlen/2 + 0x1000;
-       wtext = new wchar_t[wsize+1];
+       wtext = new wchr_t[wsize+1];
        wtext[wsize] = 0;
        return 1;
 }
        wtext[wsize] = 0;
        return 1;
 }
@@ -254,7 +254,7 @@ void TitleConfig::to_wtext(const char *from_enc, const char *text, int tlen)
 {
        demand(tlen);
        wlen = BC_Resources::encode(from_enc, BC_Resources::wide_encoding,
 {
        demand(tlen);
        wlen = BC_Resources::encode(from_enc, BC_Resources::wide_encoding,
-               (char*)text,tlen, (char *)wtext,sizeof(*wtext)*wsize) / sizeof(wchar_t);
+               (char*)text,tlen, (char *)wtext,sizeof(*wtext)*wsize) / sizeof(wchr_t);
        while( wlen > 0 && !wtext[wlen-1] ) --wlen;
 }
 
        while( wlen > 0 && !wtext[wlen-1] ) --wlen;
 }
 
@@ -1325,15 +1325,15 @@ BC_FontEntry* TitleMain::config_font()
 }
 
 
 }
 
 
-static inline bool is_ltr(wchar_t wch) { return iswalpha(wch); }
-static inline bool is_nbr(wchar_t wch) { return iswdigit(wch); }
-static inline bool is_ws(wchar_t wch) { return wch==' ' || wch=='\t'; }
-static inline bool is_idch(wchar_t wch) { return is_ltr(wch) || is_nbr(wch) || wch=='_'; }
+static inline bool is_ltr(wchr_t wch) { return iswalpha(wch); }
+static inline bool is_nbr(wchr_t wch) { return iswdigit(wch); }
+static inline bool is_ws(wchr_t wch) { return wch==' ' || wch=='\t'; }
+static inline bool is_idch(wchr_t wch) { return is_ltr(wch) || is_nbr(wch) || wch=='_'; }
 
 // return eof=-1, chr=0, opener=1, closer=2
 
 // return eof=-1, chr=0, opener=1, closer=2
-int TitleParser::wget(wchar_t &wch)
+int TitleParser::wget(wchr_t &wch)
 {
 {
-       wchar_t *wip = wid, *wtp = wtxt;  *wip = 0;  *wtp = 0;
+       wchr_t *wip = wid, *wtp = wtxt;  *wip = 0;  *wtp = 0;
        int ilen = sizeof(wid)/sizeof(wid[0]);
        int tlen = sizeof(wtxt)/sizeof(wtxt[0]);
        int ich;
        int ilen = sizeof(wid)/sizeof(wid[0]);
        int tlen = sizeof(wtxt)/sizeof(wtxt[0]);
        int ich;
@@ -1370,15 +1370,15 @@ int TitleParser::wget(wchar_t &wch)
        wch = ich;
        return ret;
 }
        wch = ich;
        return ret;
 }
-int TitleParser::tget(wchar_t &wch)
+int TitleParser::tget(wchr_t &wch)
 {
        int ret = wget(wch);
        if( ret > 0 ) {
 {
        int ret = wget(wch);
        if( ret > 0 ) {
-               int wid_len = wcslen(wid)+1;
+               int wid_len = wstrlen(wid)+1;
                BC_Resources::encode(
                        BC_Resources::wide_encoding, plugin->config.encoding,
                        (char*)wid,wid_len*sizeof(wid[0]), (char *)id,sizeof(id));
                BC_Resources::encode(
                        BC_Resources::wide_encoding, plugin->config.encoding,
                        (char*)wid,wid_len*sizeof(wid[0]), (char *)id,sizeof(id));
-               int wtxt_len = wcslen(wtxt)+1;
+               int wtxt_len = wstrlen(wtxt)+1;
                BC_Resources::encode(
                        BC_Resources::wide_encoding, plugin->config.encoding,
                        (char*)wtxt,wtxt_len*sizeof(wtxt[0]), (char *)text,sizeof(text));
                BC_Resources::encode(
                        BC_Resources::wide_encoding, plugin->config.encoding,
                        (char*)wtxt,wtxt_len*sizeof(wtxt[0]), (char *)text,sizeof(text));
@@ -1670,7 +1670,7 @@ void TitleMain::load_glyphs()
        int total_packages = 0;
 
        while( !wchrs.eof() ) {
        int total_packages = 0;
 
        while( !wchrs.eof() ) {
-               wchar_t wch1 = wchrs.wcur(), wch;
+               wchr_t wch1 = wchrs.wcur(), wch;
                long ipos = wchrs.tell();
                int ret = wchrs.tget(wch);
                if( ret > 0 ) {
                long ipos = wchrs.tell();
                int ret = wchrs.tget(wch);
                if( ret > 0 ) {
@@ -1778,7 +1778,7 @@ int TitleMain::get_text()
                if( !row ) row = title_rows.add();
                TitleChar *chr = 0;
                long ipos = wchrs.tell();
                if( !row ) row = title_rows.add();
                TitleChar *chr = 0;
                long ipos = wchrs.tell();
-               wchar_t wch1 = wchrs.wcur(), wch;
+               wchr_t wch1 = wchrs.wcur(), wch;
                int ret = wchrs.tget(wch);
                if( ret < 0 || wch == '\n' ) {
                        if( row->x1 > row->x2 ) row->x1 = row->x2 = 0;
                int ret = wchrs.tget(wch);
                if( ret < 0 || wch == '\n' ) {
                        if( row->x1 > row->x2 ) row->x1 = row->x2 = 0;
@@ -2554,7 +2554,7 @@ void TitleMain::save_data(KeyFrame *keyframe)
        char text[tsz];
        int text_len = BC_Resources::encode(
                BC_Resources::wide_encoding, DEFAULT_ENCODING,
        char text[tsz];
        int text_len = BC_Resources::encode(
                BC_Resources::wide_encoding, DEFAULT_ENCODING,
-               (char*)config.wtext, config.wlen*sizeof(wchar_t),
+               (char*)config.wtext, config.wlen*sizeof(wchr_t),
                text, tsz);
        output.append_text(text, text_len);
        output.tag.set_title("/TITLE");
                text, tsz);
        output.append_text(text, text_len);
        output.tag.set_title("/TITLE");
@@ -2621,15 +2621,15 @@ void TitleMain::read_data(KeyFrame *keyframe)
        }
 }
 
        }
 }
 
-void TitleMain::insert_text(const wchar_t *wtxt, int pos)
+void TitleMain::insert_text(const wchr_t *wtxt, int pos)
 {
 {
-       int len = wcslen(wtxt);
+       int len = wstrlen(wtxt);
        int wlen = config.wlen;
        if( pos < 0 ) pos = 0;
        if( pos > wlen ) pos = wlen;
        config.demand(wlen + len);
        int wsize1 = config.wsize-1;
        int wlen = config.wlen;
        if( pos < 0 ) pos = 0;
        if( pos > wlen ) pos = wlen;
        config.demand(wlen + len);
        int wsize1 = config.wsize-1;
-       wchar_t *wtext = config.wtext;
+       wchr_t *wtext = config.wtext;
        for( int i=wlen, j=wlen+len; --i>=pos; ) {
                if( --j >= wsize1 ) continue;
                wtext[j] = wtext[i];
        for( int i=wlen, j=wlen+len; --i>=pos; ) {
                if( --j >= wsize1 ) continue;
                wtext[j] = wtext[i];
index cf4a203791f41c8143014b8ebd5a41d2c0ad4e6d..c047f990542ef95747f3f621f665a4cf9ce9eec2 100644 (file)
@@ -161,7 +161,7 @@ public:
        double fade_in, fade_out;
        float pixels_per_second; // Speed of motion
 // Text to display
        double fade_in, fade_out;
        float pixels_per_second; // Speed of motion
 // Text to display
-       wchar_t *wtext;
+       wchr_t *wtext;
        long wsize, wlen;
 // Position in frame relative to top left
        float title_x, title_y;
        long wsize, wlen;
 // Position in frame relative to top left
        float title_x, title_y;
@@ -233,7 +233,7 @@ public:
 // Position of each image box in a row
 class TitleChar {
 public:
 // Position of each image box in a row
 class TitleChar {
 public:
-       wchar_t wch;
+       wchr_t wch;
        int typ, flags;
        void *vp;
        int x, y;
        int typ, flags;
        void *vp;
        int x, y;
@@ -502,7 +502,7 @@ public:
 
 class TitleParser
 {
 
 class TitleParser
 {
-       const wchar_t *bfr, *out, *lmt;
+       const wchr_t *bfr, *out, *lmt;
 public:
        TitleMain *plugin;
 
 public:
        TitleMain *plugin;
 
@@ -511,9 +511,9 @@ public:
        bool eof() { return out >= lmt; }
        int wcur() { return eof() ? -1 : *out; }
        int wnext() { return eof() ? -1 : *out++; }
        bool eof() { return out >= lmt; }
        int wcur() { return eof() ? -1 : *out; }
        int wnext() { return eof() ? -1 : *out++; }
-       int wget(wchar_t &wch);
-       int tget(wchar_t &wch);
-       wchar_t wid[BCSTRLEN], wtxt[BCTEXTLEN];
+       int wget(wchr_t &wch);
+       int tget(wchr_t &wch);
+       wchr_t wid[BCSTRLEN], wtxt[BCTEXTLEN];
        char id[BCSTRLEN], text[BCTEXTLEN];
        int set_attributes(int ret);
 
        char id[BCSTRLEN], text[BCTEXTLEN];
        int set_attributes(int ret);
 
@@ -587,7 +587,7 @@ public:
        void update_gui();
        void save_data(KeyFrame *keyframe);
        void read_data(KeyFrame *keyframe);
        void update_gui();
        void save_data(KeyFrame *keyframe);
        void read_data(KeyFrame *keyframe);
-       void insert_text(const wchar_t *wtxt, int pos);
+       void insert_text(const wchr_t *wtxt, int pos);
 
        void build_previews(TitleWindow *gui);
        void reset_render();
 
        void build_previews(TitleWindow *gui);
        void reset_render();
index 84f50a36ca6dd01a2b25b8edd5ef781f66b738f5..4c8791582d02705f47420c2d82bfa2dcb82e4bcd 100644 (file)
@@ -530,9 +530,9 @@ int TitleWindow::insert_ibeam(const char *txt, int ofs)
 {
        int ibeam = cur_ibeam;
        int ilen = strlen(txt)+1;
 {
        int ibeam = cur_ibeam;
        int ilen = strlen(txt)+1;
-       wchar_t wtxt[ilen];
+       wchr_t wtxt[ilen];
        int len = BC_Resources::encode(client->config.encoding, BC_Resources::wide_encoding,
        int len = BC_Resources::encode(client->config.encoding, BC_Resources::wide_encoding,
-               (char*)txt,ilen, (char *)wtxt,ilen*sizeof(wtxt[0])) / sizeof(wchar_t);
+               (char*)txt,ilen, (char *)wtxt,ilen*sizeof(wtxt[0])) / sizeof(wchr_t);
        client->insert_text(wtxt, ibeam);
        while( len > 0 && !wtxt[len] ) --len;
        int adv = len+1 + ofs;
        client->insert_text(wtxt, ibeam);
        while( len > 0 && !wtxt[len] ) --len;
        int adv = len+1 + ofs;
@@ -582,7 +582,8 @@ void TitleWindow::update_gui()
        fade_out->update((float)client->config.fade_out);
        font->update(client->config.font);
        check_style(client->config.font,0);
        fade_out->update((float)client->config.fade_out);
        font->update(client->config.font);
        check_style(client->config.font,0);
-       text->update(client->config.wtext ? &client->config.wtext[0] : L"");
+       wchr_t wz[1] = { 0 };
+       text->update(client->config.wtext ? &client->config.wtext[0] : wz);
        speed->update(client->config.pixels_per_second);
        outline->update((int64_t)client->config.outline_size);
 #ifdef USE_STROKER
        speed->update(client->config.pixels_per_second);
        outline->update((int64_t)client->config.outline_size);
 #ifdef USE_STROKER
@@ -987,10 +988,10 @@ int TitleText::button_press_event()
 int TitleText::handle_event()
 {
        window->fonts_popup->deactivate();
 int TitleText::handle_event()
 {
        window->fonts_popup->deactivate();
-       const wchar_t *wtext = get_wtext();
-       long wlen = wcslen(wtext);
+       const wchr_t *wtext = get_wtext();
+       long wlen = wstrlen(wtext);
        client->config.demand(wlen);
        client->config.demand(wlen);
-       wcsncpy(client->config.wtext, wtext, client->config.wsize);
+       wstrncpy(client->config.wtext, wtext, client->config.wsize);
        client->config.wlen = wlen;
        window->update_stats();
        window->send_configure_change();
        client->config.wlen = wlen;
        window->update_stats();
        window->send_configure_change();
index 4fa976fc343fea5bb3412c3ea4d1b0e4a90792b9..38326d9ad4bce82751a97788a51713884b2f8b99 100644 (file)
@@ -8,14 +8,14 @@ msgstr ""
 "Project-Id-Version: Cinelerra 5.1\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2016-10-15 14:02-0600\n"
 "Project-Id-Version: Cinelerra 5.1\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2016-10-15 14:02-0600\n"
-"PO-Revision-Date: 2019-11-17 11:16-0300\n"
+"PO-Revision-Date: 2020-01-26 00:30+0100\n"
 "Last-Translator: Sergio Daniel Gomez <sergio.sgsistemas@gmail.com>\n"
 "Language-Team: SPANISH <LL@li.org>\n"
 "Language: es\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Last-Translator: Sergio Daniel Gomez <sergio.sgsistemas@gmail.com>\n"
 "Language-Team: SPANISH <LL@li.org>\n"
 "Language: es\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.2.4\n"
+"X-Generator: Poedit 2.0.6\n"
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-11-14 11:47-0700\n"
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-11-14 11:47-0700\n"
@@ -26,16 +26,26 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-01-21 13:56-0700\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
 
 
-#: guicast/bcbutton.C:266 guicast/bcbutton.C:274 guicast/bcbutton.C:490
-#: cinelerra/preferencesthread.C:669
+#: guicast/bcbutton.C:266 guicast/bcbutton.C:274 guicast/bcbutton.C:494
+#: cinelerra/preferencesthread.C:672
 msgid "OK"
 msgstr "OK"
 
 #: guicast/bcbutton.C:322 guicast/bcbutton.C:330 guicast/bcbutton.C:338
 msgid "OK"
 msgstr "OK"
 
 #: guicast/bcbutton.C:322 guicast/bcbutton.C:330 guicast/bcbutton.C:338
-#: guicast/bcbutton.C:517 guicast/bcbutton.C:519 guicast/bcbutton.C:526
+#: guicast/bcbutton.C:521 guicast/bcbutton.C:523 guicast/bcbutton.C:530
 #: cinelerra/confirmquit.C:108 cinelerra/confirmquit.C:110
 #: cinelerra/confirmquit.C:108 cinelerra/confirmquit.C:110
-#: cinelerra/preferencesthread.C:742 cinelerra/preferencesthread.C:744
+#: cinelerra/preferencesthread.C:745 cinelerra/preferencesthread.C:747
 msgid "Cancel"
 msgstr "Cancelar"
 
 msgid "Cancel"
 msgstr "Cancelar"
 
@@ -68,89 +78,89 @@ msgstr "BC_DisplayInfo::init_window: no se puede conectar el servidor X.\n"
 msgid "Recent paths"
 msgstr "Rutas recientes"
 
 msgid "Recent paths"
 msgstr "Rutas recientes"
 
-#: guicast/bcfilebox.C:243
+#: guicast/bcfilebox.C:237
 msgid "Change the filter"
 msgstr "Cambiar el filtro"
 
 msgid "Change the filter"
 msgstr "Cambiar el filtro"
 
-#: guicast/bcfilebox.C:261
+#: guicast/bcfilebox.C:255
 msgid "Size numeric format"
 msgid "Size numeric format"
-msgstr "Tamaño formato numérico"
+msgstr "Formato numérico del tamaño"
 
 
-#: guicast/bcfilebox.C:287
+#: guicast/bcfilebox.C:281
 msgid "Submit the directory"
 msgid "Submit the directory"
-msgstr "Meter el directorio"
+msgstr "Enviar la carpeta"
 
 
-#: guicast/bcfilebox.C:312
+#: guicast/bcfilebox.C:306
 msgid "Descend directory"
 msgid "Descend directory"
-msgstr "Bajar el directorio"
+msgstr "Bajar la carpeta"
 
 
-#: guicast/bcfilebox.C:314
+#: guicast/bcfilebox.C:308
 msgid "Submit the file"
 msgid "Submit the file"
-msgstr "Enviar el archivo"
+msgstr "Aceptar la operación"
 
 
-#: guicast/bcfilebox.C:333
+#: guicast/bcfilebox.C:327
 msgid "Cancel the operation"
 msgstr "Cancelar la operación"
 
 msgid "Cancel the operation"
 msgstr "Cancelar la operación"
 
-#: guicast/bcfilebox.C:354 cinelerra/awindowgui.C:3478
+#: guicast/bcfilebox.C:348 cinelerra/awindowgui.C:3493
 #: cinelerra/folderlistmenu.C:61
 msgid "Display text"
 #: cinelerra/folderlistmenu.C:61
 msgid "Display text"
-msgstr "Mostrar texto"
+msgstr "Vista de Lista"
 
 
-#: guicast/bcfilebox.C:368 cinelerra/awindowgui.C:3469
+#: guicast/bcfilebox.C:362 cinelerra/awindowgui.C:3484
 #: cinelerra/folderlistmenu.C:61
 msgid "Display icons"
 #: cinelerra/folderlistmenu.C:61
 msgid "Display icons"
-msgstr "Mostrar iconos"
+msgstr "Vista de Iconos"
 
 
-#: guicast/bcfilebox.C:382
+#: guicast/bcfilebox.C:376
 msgid "Create new folder"
 msgstr "Crear nueva carpeta"
 
 msgid "Create new folder"
 msgstr "Crear nueva carpeta"
 
-#: guicast/bcfilebox.C:395
+#: guicast/bcfilebox.C:389
 msgid "Rename file"
 msgstr "Cambiar el nombre de archivo"
 
 msgid "Rename file"
 msgstr "Cambiar el nombre de archivo"
 
-#: guicast/bcfilebox.C:407
+#: guicast/bcfilebox.C:401
 msgid "Up a directory"
 msgid "Up a directory"
-msgstr "Subir un directorio"
+msgstr "Subir una carpeta"
 
 
-#: guicast/bcfilebox.C:421
+#: guicast/bcfilebox.C:415
 msgid "Delete files"
 msgstr "Eliminar archivos"
 
 msgid "Delete files"
 msgstr "Eliminar archivos"
 
-#: guicast/bcfilebox.C:435
+#: guicast/bcfilebox.C:429
 msgid "Refresh"
 msgstr "Actualizar"
 
 msgid "Refresh"
 msgstr "Actualizar"
 
-#: guicast/bcfilebox.C:617 cinelerra/channelinfo.C:1330
+#: guicast/bcfilebox.C:611 cinelerra/channelinfo.C:1330
 msgid "Directory:"
 msgid "Directory:"
-msgstr "Directorio:"
+msgstr "Carpeta:"
 
 
-#: guicast/bcfilebox.C:627 cinelerra/awindowgui.C:3177
+#: guicast/bcfilebox.C:621 cinelerra/awindowgui.C:3192
 msgid "Search:"
 msgstr "Buscar:"
 
 msgid "Search:"
 msgstr "Buscar:"
 
-#: guicast/bcfilebox.C:659
+#: guicast/bcfilebox.C:653
 msgid "File:"
 msgid "File:"
-msgstr "Archivo:"
+msgstr "Nombre del Archivo:"
 
 
-#: guicast/bcfilebox.C:665
+#: guicast/bcfilebox.C:659
 msgid "Specify filter:"
 msgid "Specify filter:"
-msgstr "Filtro Activo:"
+msgstr "Especificar filtro:"
 
 
-#: guicast/bcfilebox.C:1365 cinelerra/binfolder.C:1673
+#: guicast/bcfilebox.C:1357 cinelerra/binfolder.C:1673
 msgid ": New folder"
 msgstr ": Nueva carpeta"
 
 msgid ": New folder"
 msgstr ": Nueva carpeta"
 
-#: guicast/bcfilebox.C:1380
+#: guicast/bcfilebox.C:1372
 msgid ": Rename"
 msgstr ": Cambiar el nombre"
 
 msgid ": Rename"
 msgstr ": Cambiar el nombre"
 
-#: guicast/bcfilebox.C:1395
+#: guicast/bcfilebox.C:1387
 msgid ": Delete"
 msgstr ": Borrar"
 
 msgid ": Delete"
 msgstr ": Borrar"
 
-#: guicast/bcfilebox.inc:47 cinelerra/mainmenu.C:101
+#: guicast/bcfilebox.inc:47 cinelerra/mainmenu.C:102
 msgid "File"
 msgstr "Archivo"
 
 msgid "File"
 msgstr "Archivo"
 
@@ -170,11 +180,11 @@ msgstr "Ext."
 msgid "Enter the name of the folder:"
 msgstr "Introduzca el nombre de la carpeta:"
 
 msgid "Enter the name of the folder:"
 msgstr "Introduzca el nombre de la carpeta:"
 
-#: guicast/bcnewfolder.C:51 cinelerra/pluginclient.C:557
+#: guicast/bcnewfolder.C:51 cinelerra/pluginclient.C:538
 msgid "Untitled"
 msgstr "Sin título"
 
 msgid "Untitled"
 msgstr "Sin título"
 
-#: guicast/bcpopup.C:32 guicast/bcpopup.C:38 cinelerra/canvas.C:1118
+#: guicast/bcpopup.C:32 guicast/bcpopup.C:38 cinelerra/canvas.C:1110
 msgid "Fullscreen"
 msgstr "Pantalla Completa"
 
 msgid "Fullscreen"
 msgstr "Pantalla Completa"
 
@@ -199,17 +209,17 @@ msgstr "Introducir un nuevo nombre para el archivo:"
 msgid "Conversion from %s to %s is not available\n"
 msgstr "La conversión de %s a %s no está disponible\n"
 
 msgid "Conversion from %s to %s is not available\n"
 msgstr "La conversión de %s a %s no está disponible\n"
 
-#: guicast/bctextbox.C:2901 cinelerra/editpopup.C:134
+#: guicast/bctextbox.C:2901 cinelerra/editpopup.C:188
 msgid "Cut"
 msgstr "Cortar"
 
 msgid "Cut"
 msgstr "Cortar"
 
-#: guicast/bctextbox.C:2915 cinelerra/clippopup.C:240 cinelerra/editpopup.C:105
-#: cinelerra/mainmenu.C:885 cinelerra/proxypopup.C:205 cinelerra/savefile.C:242
+#: guicast/bctextbox.C:2915 cinelerra/clippopup.C:247 cinelerra/editpopup.C:159
+#: cinelerra/mainmenu.C:889 cinelerra/proxypopup.C:205 cinelerra/savefile.C:242
 msgid "Copy"
 msgstr "Copiar"
 
 msgid "Copy"
 msgstr "Copiar"
 
-#: guicast/bctextbox.C:2928 cinelerra/assetpopup.C:313
-#: cinelerra/clippopup.C:273 cinelerra/editpopup.C:191 cinelerra/mainmenu.C:898
+#: guicast/bctextbox.C:2928 cinelerra/assetpopup.C:423
+#: cinelerra/clippopup.C:280 cinelerra/editpopup.C:245 cinelerra/mainmenu.C:902
 #: cinelerra/proxypopup.C:238 cinelerra/swindow.C:547
 msgid "Paste"
 msgstr "Pegar"
 #: cinelerra/proxypopup.C:238 cinelerra/swindow.C:547
 msgid "Paste"
 msgstr "Pegar"
@@ -217,7 +227,7 @@ msgstr "Pegar"
 #: guicast/bctheme.C:511
 #, c-format
 msgid "Theme::get_image: %s not found.\n"
 #: guicast/bctheme.C:511
 #, c-format
 msgid "Theme::get_image: %s not found.\n"
-msgstr "Theme::obtener_imagen: %s no encontrado.\n"
+msgstr "Tema::obtener_imagen: %s no encontrado.\n"
 
 #: guicast/bctheme.C:522
 #, c-format
 
 #: guicast/bctheme.C:522
 #, c-format
@@ -227,7 +237,11 @@ msgstr "BC_Theme::check_used: Las imágenes no se utilizan.\n"
 #: guicast/bcwindow3d.C:65
 #, c-format
 msgid "%s: opengl initialization failed failed\n"
 #: guicast/bcwindow3d.C:65
 #, c-format
 msgid "%s: opengl initialization failed failed\n"
-msgstr "%s: opengl initialization failed failed\n"
+msgstr "%s: falló la inicialización de opengl\n"
+
+#: guicast/bcwindowbase.C:2419
+msgid " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
+msgstr " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
 
 #: guicast/test.C:165
 msgid ""
 
 #: guicast/test.C:165
 msgid ""
@@ -241,41 +255,41 @@ msgstr ""
 msgid "Hello world"
 msgstr "Hola mundo"
 
 msgid "Hello world"
 msgstr "Hola mundo"
 
-#: guicast/units.h:39
+#: guicast/units.h:41
 msgid "Hours:Minutes:Seconds.xxx"
 msgstr "Horas: Minutos: Segundos.xxx"
 
 msgid "Hours:Minutes:Seconds.xxx"
 msgstr "Horas: Minutos: Segundos.xxx"
 
-#: guicast/units.h:42
+#: guicast/units.h:44
 msgid "Hours:Minutes:Seconds:Frames"
 msgstr "Horas:Minutos:Segundos:Fotogramas"
 
 msgid "Hours:Minutes:Seconds:Frames"
 msgstr "Horas:Minutos:Segundos:Fotogramas"
 
-#: guicast/units.h:44 cinelerra/patchbay.C:83 cinelerra/transitionpopup.C:141
+#: guicast/units.h:46 cinelerra/patchbay.C:83 cinelerra/transitionpopup.C:141
 #: plugins/motion51/motionwindow51.C:51
 msgid "Samples"
 msgstr "Muestras"
 
 #: plugins/motion51/motionwindow51.C:51
 msgid "Samples"
 msgstr "Muestras"
 
-#: guicast/units.h:46
+#: guicast/units.h:48
 msgid "Hex Samples"
 msgstr "Muestras Hex"
 
 msgid "Hex Samples"
 msgstr "Muestras Hex"
 
-#: guicast/units.h:48 cinelerra/patchbay.C:84 cinelerra/transitionpopup.C:140
+#: guicast/units.h:50 cinelerra/patchbay.C:84 cinelerra/transitionpopup.C:140
 msgid "Frames"
 msgstr "Fotogramas"
 
 msgid "Frames"
 msgstr "Fotogramas"
 
-#: guicast/units.h:60
+#: guicast/units.h:62
 msgid "Feet-frames"
 msgid "Feet-frames"
-msgstr "Feet-fotogramas"
+msgstr "Fotos x Pie (USA)"
 
 
-#: guicast/units.h:65 guicast/units.h:68
+#: guicast/units.h:67 guicast/units.h:70
 msgid "Hours:Minutes:Seconds"
 msgstr "Horas:Minutos:Segundos"
 
 msgid "Hours:Minutes:Seconds"
 msgstr "Horas:Minutos:Segundos"
 
-#: guicast/units.h:71 cinelerra/interfaceprefs.C:194 cinelerra/patchbay.C:93
+#: guicast/units.h:73 cinelerra/interfaceprefs.C:203 cinelerra/patchbay.C:93
 #: cinelerra/transitionpopup.C:139
 msgid "Seconds"
 #: cinelerra/transitionpopup.C:139
 msgid "Seconds"
-msgstr "Segundos"
+msgstr "Seg"
 
 
-#: guicast/units.h:76
+#: guicast/units.h:78
 msgid "Minutes:Seconds"
 msgstr "Minutos: Segundos"
 
 msgid "Minutes:Seconds"
 msgstr "Minutos: Segundos"
 
@@ -309,65 +323,65 @@ msgstr ""
 #: cinelerra/adcuts.C:30
 #, c-format
 msgid "cuts to %s complete\n"
 #: cinelerra/adcuts.C:30
 #, c-format
 msgid "cuts to %s complete\n"
-msgstr "cuts to %s complete\n"
+msgstr "cortes a %s completos\n"
 
 
-#: cinelerra/adeviceprefs.C:299 cinelerra/vdeviceprefs.C:332
+#: cinelerra/adeviceprefs.C:305 cinelerra/vdeviceprefs.C:332
 #: cinelerra/vdeviceprefs.C:344 cinelerra/vdeviceprefs.C:361
 msgid "Device path:"
 msgstr "Ruta del dispositivo:"
 
 #: cinelerra/vdeviceprefs.C:344 cinelerra/vdeviceprefs.C:361
 msgid "Device path:"
 msgstr "Ruta del dispositivo:"
 
-#: cinelerra/adeviceprefs.C:320 cinelerra/adeviceprefs.C:390
-#: cinelerra/adeviceprefs.C:579 cinelerra/adeviceprefs.C:596
-#: cinelerra/adeviceprefs.C:598 cinelerra/assetedit.C:371
+#: cinelerra/adeviceprefs.C:326 cinelerra/adeviceprefs.C:396
+#: cinelerra/adeviceprefs.C:585 cinelerra/adeviceprefs.C:602
+#: cinelerra/adeviceprefs.C:604 cinelerra/assetedit.C:371
 #: cinelerra/fileformat.C:88 cinelerra/formatwindow.C:48
 msgid "Bits:"
 msgstr "Bits:"
 
 #: cinelerra/fileformat.C:88 cinelerra/formatwindow.C:48
 msgid "Bits:"
 msgstr "Bits:"
 
-#: cinelerra/adeviceprefs.C:369
+#: cinelerra/adeviceprefs.C:375
 msgid "Device:"
 msgstr "Dispositivo:"
 
 msgid "Device:"
 msgstr "Dispositivo:"
 
-#: cinelerra/adeviceprefs.C:404
+#: cinelerra/adeviceprefs.C:410
 msgid "Stop playback locks up."
 msgid "Stop playback locks up."
-msgstr "Evitar que el play se bloquee."
+msgstr "Parar la reproducción si se bloquea."
 
 
-#: cinelerra/adeviceprefs.C:431
+#: cinelerra/adeviceprefs.C:437
 msgid "Server:"
 msgstr "Servidor:"
 
 msgid "Server:"
 msgstr "Servidor:"
 
-#: cinelerra/adeviceprefs.C:449 cinelerra/adeviceprefs.C:502
-#: cinelerra/interfaceprefs.C:133 cinelerra/performanceprefs.C:167
+#: cinelerra/adeviceprefs.C:455 cinelerra/adeviceprefs.C:508
+#: cinelerra/interfaceprefs.C:134 cinelerra/performanceprefs.C:167
 #: cinelerra/vdeviceprefs.C:277
 msgid "Port:"
 msgstr "Puerto:"
 
 #: cinelerra/vdeviceprefs.C:277
 msgid "Port:"
 msgstr "Puerto:"
 
-#: cinelerra/adeviceprefs.C:482 cinelerra/vdeviceprefs.C:259
+#: cinelerra/adeviceprefs.C:488 cinelerra/vdeviceprefs.C:259
 msgid "Device Path:"
 msgstr "Ruta de Dispositivo:"
 
 msgid "Device Path:"
 msgstr "Ruta de Dispositivo:"
 
-#: cinelerra/adeviceprefs.C:522 cinelerra/channeledit.C:997
-#: cinelerra/vdeviceprefs.C:295
+#: cinelerra/adeviceprefs.C:528 cinelerra/channeledit.C:997
+#: cinelerra/vdeviceprefs.C:295 plugins/compressormulti/comprmultigui.C:190
 msgid "Channel:"
 msgstr "Canal:"
 
 msgid "Channel:"
 msgstr "Canal:"
 
-#: cinelerra/adeviceprefs.C:546 cinelerra/vdeviceprefs.C:318
+#: cinelerra/adeviceprefs.C:552 cinelerra/vdeviceprefs.C:318
 msgid "Syt Offset:"
 msgstr "Compensación Syt:"
 
 msgid "Syt Offset:"
 msgstr "Compensación Syt:"
 
-#: cinelerra/adeviceprefs.C:564 cinelerra/adeviceprefs.C:566
+#: cinelerra/adeviceprefs.C:570 cinelerra/adeviceprefs.C:572
 #: cinelerra/vdeviceprefs.C:214 cinelerra/vdeviceprefs.C:216
 msgid "DVB Adapter:"
 msgstr "Adaptador DVB:"
 
 #: cinelerra/vdeviceprefs.C:214 cinelerra/vdeviceprefs.C:216
 msgid "DVB Adapter:"
 msgstr "Adaptador DVB:"
 
-#: cinelerra/adeviceprefs.C:572 cinelerra/vdeviceprefs.C:221
+#: cinelerra/adeviceprefs.C:578 cinelerra/vdeviceprefs.C:221
 msgid "dev:"
 msgstr "disp:"
 
 msgid "dev:"
 msgstr "disp:"
 
-#: cinelerra/adeviceprefs.C:587 cinelerra/adeviceprefs.C:606
+#: cinelerra/adeviceprefs.C:593 cinelerra/adeviceprefs.C:612
 msgid "Follow audio config"
 msgid "Follow audio config"
-msgstr "Seguir config audio"
+msgstr "Sigue la configuración de audio"
 
 
-#: cinelerra/amodule.C:472
+#: cinelerra/amodule.C:268
 #, c-format
 msgid "AModule::import_samples Couldn't open %s.\n"
 msgstr "AModule::importar_samples No se pudo abrir %s.\n"
 #, c-format
 msgid "AModule::import_samples Couldn't open %s.\n"
 msgstr "AModule::importar_samples No se pudo abrir %s.\n"
@@ -381,8 +395,8 @@ msgstr "Automatización"
 msgid "Plugin %d"
 msgstr "Plugin %d"
 
 msgid "Plugin %d"
 msgstr "Plugin %d"
 
-#: cinelerra/apanel.C:86 cinelerra/editpopup.C:162 cinelerra/gwindowgui.C:71
-#: cinelerra/keyframepopup.C:569 cinelerra/mainmenu.C:247
+#: cinelerra/apanel.C:86 cinelerra/gwindowgui.C:71
+#: cinelerra/keyframepopup.C:569 cinelerra/mainmenu.C:251
 msgid "Mute"
 msgstr "Silenciar"
 
 msgid "Mute"
 msgstr "Silenciar"
 
@@ -396,172 +410,184 @@ msgstr "Reproducir"
 msgid "fade"
 msgstr "desvanecer"
 
 msgid "fade"
 msgstr "desvanecer"
 
-#: cinelerra/apatchgui.C:304 cinelerra/gwindowgui.C:79 cinelerra/mainmenu.C:249
+#: cinelerra/apatchgui.C:304 cinelerra/gwindowgui.C:79 cinelerra/mainmenu.C:253
 msgid "Pan"
 msgid "Pan"
-msgstr "Pan"
+msgstr "Panorámica"
 
 #: cinelerra/apatchgui.C:314 cinelerra/apatchgui.C:322
 msgid "pan"
 
 #: cinelerra/apatchgui.C:314 cinelerra/apatchgui.C:322
 msgid "pan"
-msgstr "pan"
+msgstr "panorámica"
 
 #: cinelerra/apatchgui.C:370 cinelerra/mixersalign.C:73
 #: cinelerra/mixersalign.C:188 cinelerra/vpatchgui.C:485
 msgid "Mixer"
 msgstr "Mezclador"
 
 
 #: cinelerra/apatchgui.C:370 cinelerra/mixersalign.C:73
 #: cinelerra/mixersalign.C:188 cinelerra/vpatchgui.C:485
 msgid "Mixer"
 msgstr "Mezclador"
 
-#: cinelerra/appearanceprefs.C:78
+#: cinelerra/appearanceprefs.C:79
 msgid "Layout:"
 msgstr "Diseño:"
 
 msgid "Layout:"
 msgstr "Diseño:"
 
-#: cinelerra/appearanceprefs.C:84
+#: cinelerra/appearanceprefs.C:85
 msgid "Theme:"
 msgstr "Tema:"
 
 msgid "Theme:"
 msgstr "Tema:"
 
-#: cinelerra/appearanceprefs.C:91
+#: cinelerra/appearanceprefs.C:92
 msgid "Plugin Icons:"
 msgstr "Complemento Íconos:"
 
 msgid "Plugin Icons:"
 msgstr "Complemento Íconos:"
 
-#: cinelerra/appearanceprefs.C:100
+#: cinelerra/appearanceprefs.C:101
 msgid "Layout Scale:"
 msgstr "Escala de diseño:"
 
 msgid "Layout Scale:"
 msgstr "Escala de diseño:"
 
-#: cinelerra/appearanceprefs.C:104
+#: cinelerra/appearanceprefs.C:105
 msgid "View thumbnail size:"
 msgid "View thumbnail size:"
-msgstr "Ver tamaño de miniatura:"
+msgstr "Tamaño de miniatura:"
 
 
-#: cinelerra/appearanceprefs.C:108
+#: cinelerra/appearanceprefs.C:109
 msgid "Vicon quality:"
 msgstr "Calidad de Vicon:"
 
 msgid "Vicon quality:"
 msgstr "Calidad de Vicon:"
 
-#: cinelerra/appearanceprefs.C:112
+#: cinelerra/appearanceprefs.C:113
 msgid "Vicon color mode:"
 msgstr "Modo de color de Vicon:"
 
 msgid "Vicon color mode:"
 msgstr "Modo de color de Vicon:"
 
-#: cinelerra/appearanceprefs.C:122
+#: cinelerra/appearanceprefs.C:123
 msgid "Time Format:"
 msgid "Time Format:"
-msgstr "Formato de hora:"
-
-#: cinelerra/appearanceprefs.C:125
-msgid "Flags:"
-msgstr "Banderines:"
+msgstr "Formato de Tiempo:"
 
 
-#: cinelerra/appearanceprefs.C:157
+#: cinelerra/appearanceprefs.C:150
 msgid "Frames per foot:"
 msgid "Frames per foot:"
-msgstr "Fotogramas por foot:"
+msgstr "Fotogramas por pie:"
 
 
-#: cinelerra/appearanceprefs.C:172 cinelerra/channeledit.C:1417
+#: cinelerra/appearanceprefs.C:164 cinelerra/channeledit.C:1417
 #: cinelerra/channeledit.C:1491 plugins/chromakey/chromakey.C:135
 #: cinelerra/channeledit.C:1491 plugins/chromakey/chromakey.C:135
-#: plugins/chromakeyhsv/chromakey.C:187 plugins/sketcher/sketcherwindow.C:334
-#: plugins/sketcher/sketcherwindow.C:335 plugins/titler/titlerwindow.C:352
+#: plugins/chromakeyhsv/chromakey.C:187 plugins/sketcher/sketcherwindow.C:386
+#: plugins/sketcher/sketcherwindow.C:387 plugins/titler/titlerwindow.C:352
 msgid "Color:"
 msgstr "Color:"
 
 msgid "Color:"
 msgstr "Color:"
 
-#: cinelerra/appearanceprefs.C:175
+#: cinelerra/appearanceprefs.C:167
 msgid "Highlighting Inversion color:"
 msgid "Highlighting Inversion color:"
-msgstr "Resaltado del color de inversión:"
+msgstr "Resaltando el color de inversión:"
 
 
-#: cinelerra/appearanceprefs.C:182
+#: cinelerra/appearanceprefs.C:174
 msgid "Composer BG Color:"
 msgstr "Color de fondo del compositor:"
 
 msgid "Composer BG Color:"
 msgstr "Color de fondo del compositor:"
 
-#: cinelerra/appearanceprefs.C:192
+#: cinelerra/appearanceprefs.C:184
 msgid "YUV color space:"
 msgstr "Espacio de color YUV:"
 
 msgid "YUV color space:"
 msgstr "Espacio de color YUV:"
 
-#: cinelerra/appearanceprefs.C:199
+#: cinelerra/appearanceprefs.C:191
 msgid "YUV color range:"
 msgstr "Rango de color YUV:"
 
 msgid "YUV color range:"
 msgstr "Rango de color YUV:"
 
-#: cinelerra/appearanceprefs.C:458
+#: cinelerra/appearanceprefs.C:202
+msgid "Warnings:"
+msgstr "Advertencias:"
+
+#: cinelerra/appearanceprefs.C:223
+msgid "Flags:"
+msgstr "Banderines:"
+
+#: cinelerra/appearanceprefs.C:473
 msgid "Use thumbnails in resource window"
 msgid "Use thumbnails in resource window"
-msgstr "Usar miniaturas en la ventana de clips"
+msgstr "Usar miniaturas en la ventana de recursos"
 
 
-#: cinelerra/appearanceprefs.C:519 plugins/descratch/descratch.C:625
+#: cinelerra/appearanceprefs.C:534 plugins/descratch/descratch.C:625
 msgid "Low"
 msgstr "Bajo"
 
 msgid "Low"
 msgstr "Bajo"
 
-#: cinelerra/appearanceprefs.C:520
+#: cinelerra/appearanceprefs.C:535
 msgid "Med"
 msgstr "Medio"
 
 msgid "Med"
 msgstr "Medio"
 
-#: cinelerra/appearanceprefs.C:521 plugins/descratch/descratch.C:626
+#: cinelerra/appearanceprefs.C:536 plugins/descratch/descratch.C:626
 msgid "High"
 msgstr "Intenso"
 
 msgid "High"
 msgstr "Intenso"
 
-#: cinelerra/appearanceprefs.C:556
+#: cinelerra/appearanceprefs.C:571
 msgid "Show tip of the day"
 msgstr "Mostrar sugerencia del día"
 
 msgid "Show tip of the day"
 msgstr "Mostrar sugerencia del día"
 
-#: cinelerra/appearanceprefs.C:569
+#: cinelerra/appearanceprefs.C:584
 msgid "ffmpeg probe warns rebuild indexes"
 msgstr "tubería ffmpeg advierte reconstrucción de índices"
 
 msgid "ffmpeg probe warns rebuild indexes"
 msgstr "tubería ffmpeg advierte reconstrucción de índices"
 
-#: cinelerra/appearanceprefs.C:582
+#: cinelerra/appearanceprefs.C:597
 msgid "EDL version warns if mismatched"
 msgstr "Versión EDL advierte si no coinciden"
 
 msgid "EDL version warns if mismatched"
 msgstr "Versión EDL advierte si no coinciden"
 
-#: cinelerra/appearanceprefs.C:595
+#: cinelerra/appearanceprefs.C:610
+msgid "Stack warns if reference not modified"
+msgstr "La pila advierte si la referencia no se modifica"
+
+#: cinelerra/appearanceprefs.C:623
 msgid "Create Bluray warns if not root"
 msgstr "Crear advertencias de Bluray si no es root"
 
 msgid "Create Bluray warns if not root"
 msgstr "Crear advertencias de Bluray si no es root"
 
-#: cinelerra/appearanceprefs.C:608
+#: cinelerra/appearanceprefs.C:636
+msgid "Warn on creating file references"
+msgstr "Warn on creating file references"
+
+#: cinelerra/appearanceprefs.C:650
 msgid "Popups activate on button up"
 msgid "Popups activate on button up"
-msgstr "Popups activar el botón de arriba"
+msgstr "Las ventanas emergentes se activan al presionar el botón"
 
 
-#: cinelerra/appearanceprefs.C:621
+#: cinelerra/appearanceprefs.C:663
 msgid "Set Input Focus when window entered"
 msgid "Set Input Focus when window entered"
-msgstr "Establecer el enfoque de entrada cuando se entra en la ventana"
+msgstr "Establecer el enfoque cuando se entra en la ventana"
 
 
-#: cinelerra/appearanceprefs.C:634
+#: cinelerra/appearanceprefs.C:676
 msgid "Click to activate text focus"
 msgstr "Clic para activar foco en texto"
 
 msgid "Click to activate text focus"
 msgstr "Clic para activar foco en texto"
 
-#: cinelerra/appearanceprefs.C:650
+#: cinelerra/appearanceprefs.C:692
 msgid "Click to deactivate text focus"
 msgstr "Click para desactivar foco en texto"
 
 msgid "Click to deactivate text focus"
 msgstr "Click para desactivar foco en texto"
 
-#: cinelerra/appearanceprefs.C:666
+#: cinelerra/appearanceprefs.C:708
 msgid "Always show next frame"
 msgstr "Siempre mostrar fotograma siguiente"
 
 msgid "Always show next frame"
 msgstr "Siempre mostrar fotograma siguiente"
 
-#: cinelerra/appearanceprefs.C:679
+#: cinelerra/appearanceprefs.C:721
 msgid "Autocolor assets"
 msgstr "Color automático de recursos"
 
 msgid "Autocolor assets"
 msgstr "Color automático de recursos"
 
-#: cinelerra/appearanceprefs.C:711
+#: cinelerra/appearanceprefs.C:753
 msgid "BT601"
 msgstr "BT601"
 
 msgid "BT601"
 msgstr "BT601"
 
-#: cinelerra/appearanceprefs.C:712
+#: cinelerra/appearanceprefs.C:754
 msgid "BT709"
 msgstr "BT709"
 
 msgid "BT709"
 msgstr "BT709"
 
-#: cinelerra/appearanceprefs.C:713
+#: cinelerra/appearanceprefs.C:755
 msgid "BT2020"
 msgstr "BT2020"
 
 msgid "BT2020"
 msgstr "BT2020"
 
-#: cinelerra/appearanceprefs.C:755 cinelerra/compresspopup.C:39
-#: cinelerra/file.inc:109
+#: cinelerra/appearanceprefs.C:797 cinelerra/compresspopup.C:39
+#: cinelerra/file.inc:110
 msgid "JPEG"
 msgstr "JPEG"
 
 msgid "JPEG"
 msgstr "JPEG"
 
-#: cinelerra/appearanceprefs.C:756 cinelerra/file.inc:113
+#: cinelerra/appearanceprefs.C:798 cinelerra/file.inc:114
 msgid "MPEG"
 msgstr "MPEG"
 
 msgid "MPEG"
 msgstr "MPEG"
 
-#: cinelerra/appearanceprefs.C:798
+#: cinelerra/appearanceprefs.C:840
 msgid "Perpetual session"
 msgstr "Sesión perpetua"
 
 msgid "Perpetual session"
 msgstr "Sesión perpetua"
 
-#: cinelerra/appearanceprefs.C:811
+#: cinelerra/appearanceprefs.C:853
 msgid "Clears before toggle"
 msgstr "Se borra antes de alternar"
 
 msgid "Clears before toggle"
 msgstr "Se borra antes de alternar"
 
-#: cinelerra/appearanceprefs.C:824
+#: cinelerra/appearanceprefs.C:866
 msgid "Timeline Rectify Audio"
 msgstr "Rectificar línea de tiempo de audio"
 
 msgid "Timeline Rectify Audio"
 msgstr "Rectificar línea de tiempo de audio"
 
-#: cinelerra/appearanceprefs.C:837
+#: cinelerra/appearanceprefs.C:879
 msgid "Composer BG color"
 msgstr "Color de fondo del compositor"
 
 msgid "Composer BG color"
 msgstr "Color de fondo del compositor"
 
@@ -579,7 +605,7 @@ msgstr "Seleccionar un archivo para este clip:"
 
 #: cinelerra/assetedit.C:266
 msgid "File format:"
 
 #: cinelerra/assetedit.C:266
 msgid "File format:"
-msgstr "Formato de archivo:"
+msgstr "Formato del archivo:"
 
 #: cinelerra/assetedit.C:275
 msgid "Bytes:"
 
 #: cinelerra/assetedit.C:275
 msgid "Bytes:"
@@ -644,7 +670,7 @@ msgstr "Velocidad de fotograma:"
 
 #: cinelerra/assetedit.C:475 cinelerra/scale.C:214 cinelerra/scale.C:216
 #: cinelerra/setformat.C:363 plugins/freeverb/freeverb.C:332
 
 #: cinelerra/assetedit.C:475 cinelerra/scale.C:214 cinelerra/scale.C:216
 #: cinelerra/setformat.C:363 plugins/freeverb/freeverb.C:332
-#: plugins/photoscale/photoscale.C:66 plugins/sketcher/sketcherwindow.C:308
+#: plugins/photoscale/photoscale.C:66 plugins/sketcher/sketcherwindow.C:356
 msgid "Width:"
 msgstr "Ancho:"
 
 msgid "Width:"
 msgstr "Ancho:"
 
@@ -686,83 +712,126 @@ msgstr ": Ruta"
 msgid "Select a file"
 msgstr "Seleccionar un archivo"
 
 msgid "Select a file"
 msgstr "Seleccionar un archivo"
 
-#: cinelerra/assetpopup.C:86 cinelerra/clippopup.C:75
+#: cinelerra/assetpopup.C:89 cinelerra/clippopup.C:76
 msgid "Match..."
 msgstr "Ajusta todo.."
 
 msgid "Match..."
 msgstr "Ajusta todo.."
 
-#: cinelerra/assetpopup.C:91 cinelerra/proxypopup.C:70
+#: cinelerra/assetpopup.C:94 cinelerra/proxypopup.C:70
 msgid "Remove..."
 msgstr "Eliminar..."
 
 msgid "Remove..."
 msgstr "Eliminar..."
 
-#: cinelerra/assetpopup.C:151 cinelerra/clippopup.C:136
+#: cinelerra/assetpopup.C:176 cinelerra/clippopup.C:143
 #: cinelerra/proxypopup.C:101
 msgid "Info..."
 #: cinelerra/proxypopup.C:101
 msgid "Info..."
-msgstr "Info ..."
+msgstr "Información..."
+
+#: cinelerra/assetpopup.C:208 cinelerra/clippopup.C:451
+#: cinelerra/editpopup.C:98
+msgid "Open EDL"
+msgstr "Abrir EDL"
+
+#: cinelerra/assetpopup.C:230 cinelerra/editpopup.C:116
+#: cinelerra/mwindow.C:2109
+#, c-format
+msgid ""
+"Error: unable to open:\n"
+"  %s"
+msgstr ""
+"Error: no se puede abrir:\n"
+" %s"
+
+#: cinelerra/assetpopup.C:236 cinelerra/editpopup.C:122
+#: cinelerra/mwindow.C:2134
+#, c-format
+msgid ""
+"Error: unable to load:\n"
+"  %s"
+msgstr ""
+"Error: no se puede cargar:\n"
+" %s"
 
 
-#: cinelerra/assetpopup.C:183
+#: cinelerra/assetpopup.C:248 cinelerra/mwindow.C:3973
+#, c-format
+msgid ""
+"media is not EDL:\n"
+"%s"
+msgstr ""
+"los medios no son EDL:\n"
+"%s"
+
+#: cinelerra/assetpopup.C:254 cinelerra/clippopup.C:474
+#: cinelerra/mwindowgui.C:2347
+msgid "Close EDL"
+msgstr "Cerrar EDL"
+
+#: cinelerra/assetpopup.C:275
+msgid "EDL to clip"
+msgstr "EDL al clip"
+
+#: cinelerra/assetpopup.C:293
 msgid "Rebuild index"
 msgid "Rebuild index"
-msgstr "Reconstruir índice"
+msgstr "Reconstruir el índice"
 
 
-#: cinelerra/assetpopup.C:202 cinelerra/channeledit.C:553
+#: cinelerra/assetpopup.C:312 cinelerra/channeledit.C:553
 msgid "Sort"
 msgstr "Ordenar"
 
 msgid "Sort"
 msgstr "Ordenar"
 
-#: cinelerra/assetpopup.C:220 cinelerra/clippopup.C:184
-#: cinelerra/mainmenu.C:242 cinelerra/proxypopup.C:149
+#: cinelerra/assetpopup.C:330 cinelerra/clippopup.C:191
+#: cinelerra/mainmenu.C:246 cinelerra/proxypopup.C:149
 msgid "View"
 msgstr "Ver"
 
 msgid "View"
 msgstr "Ver"
 
-#: cinelerra/assetpopup.C:247 cinelerra/clippopup.C:211
+#: cinelerra/assetpopup.C:357 cinelerra/clippopup.C:218
 #: cinelerra/proxypopup.C:176
 msgid "View in new window"
 msgstr "Ver en una nueva ventana"
 
 #: cinelerra/proxypopup.C:176
 msgid "View in new window"
 msgstr "Ver en una nueva ventana"
 
-#: cinelerra/assetpopup.C:275
+#: cinelerra/assetpopup.C:385
 msgid "Open Mixers"
 msgid "Open Mixers"
-msgstr "Abrir mezcladores"
+msgstr "Abrir en mezclador"
 
 
-#: cinelerra/assetpopup.C:294
+#: cinelerra/assetpopup.C:404
 msgid "Insert Mixers"
 msgid "Insert Mixers"
-msgstr "Insertar clips"
+msgstr "Insertar en mezclador"
 
 
-#: cinelerra/assetpopup.C:331 cinelerra/clippopup.C:291
+#: cinelerra/assetpopup.C:441 cinelerra/clippopup.C:298
 msgid "Match project size"
 msgstr "Ajusta al tamaño del proyecto"
 
 msgid "Match project size"
 msgstr "Ajusta al tamaño del proyecto"
 
-#: cinelerra/assetpopup.C:344 cinelerra/clippopup.C:305
+#: cinelerra/assetpopup.C:454 cinelerra/clippopup.C:312
 msgid "Match frame rate"
 msgstr "Ajusta velocidad de fotograma"
 
 msgid "Match frame rate"
 msgstr "Ajusta velocidad de fotograma"
 
-#: cinelerra/assetpopup.C:357 cinelerra/clippopup.C:319
+#: cinelerra/assetpopup.C:467 cinelerra/clippopup.C:326
 msgid "Match all"
 msgstr "Ajusta todo"
 
 msgid "Match all"
 msgstr "Ajusta todo"
 
-#: cinelerra/assetpopup.C:371 cinelerra/proxypopup.C:256
+#: cinelerra/assetpopup.C:481 cinelerra/proxypopup.C:256
 msgid "Remove from project"
 msgstr "Eliminar del proyecto"
 
 msgid "Remove from project"
 msgstr "Eliminar del proyecto"
 
-#: cinelerra/assetpopup.C:393 cinelerra/proxypopup.C:277
+#: cinelerra/assetpopup.C:502 cinelerra/proxypopup.C:277
 msgid "Remove from disk"
 msgstr "Eliminar del disco"
 
 msgid "Remove from disk"
 msgstr "Eliminar del disco"
 
-#: cinelerra/assetpopup.C:433 cinelerra/proxypopup.C:314
+#: cinelerra/assetpopup.C:539 cinelerra/proxypopup.C:314
 #: plugins/descratch/descratch.C:627
 msgid "All"
 msgstr "Todos"
 
 #: plugins/descratch/descratch.C:627
 msgid "All"
 msgstr "Todos"
 
-#: cinelerra/assetpopup.C:434 cinelerra/proxypopup.C:315
+#: cinelerra/assetpopup.C:540 cinelerra/proxypopup.C:315
 msgid "Used"
 msgstr "Usado"
 
 msgid "Used"
 msgstr "Usado"
 
-#: cinelerra/assetpopup.C:435 cinelerra/proxypopup.C:316
+#: cinelerra/assetpopup.C:541 cinelerra/proxypopup.C:316
 msgid "Unused"
 msgstr "No usado"
 
 msgid "Unused"
 msgstr "No usado"
 
-#: cinelerra/assetpopup.C:436 cinelerra/channeledit.C:153
-#: cinelerra/ffmpeg.C:1864 cinelerra/ffmpeg.C:1911 cinelerra/fileexr.C:200
+#: cinelerra/assetpopup.C:542 cinelerra/channeledit.C:153
+#: cinelerra/ffmpeg.C:1887 cinelerra/ffmpeg.C:1934 cinelerra/fileexr.C:200
 #: cinelerra/fileffmpeg.C:545 cinelerra/fileffmpeg.C:717
 #: cinelerra/proxypopup.C:317 cinelerra/recordbatches.C:309
 #: cinelerra/fileffmpeg.C:545 cinelerra/fileffmpeg.C:717
 #: cinelerra/proxypopup.C:317 cinelerra/recordbatches.C:309
-#: cinelerra/recordgui.C:323 cinelerra/rescale.C:7
+#: cinelerra/recordgui.C:323 cinelerra/recordgui.C:772 cinelerra/rescale.C:7
 #: cinelerra/sharedlocation.C:144 cinelerra/sharedlocation.C:149
 #: cinelerra/sharedlocation.C:162 cinelerra/vwindowgui.C:270
 #: plugins/descratch/descratch.C:624 plugins/findobj/findobjwindow.C:887
 #: cinelerra/sharedlocation.C:144 cinelerra/sharedlocation.C:149
 #: cinelerra/sharedlocation.C:162 cinelerra/vwindowgui.C:270
 #: plugins/descratch/descratch.C:624 plugins/findobj/findobjwindow.C:887
@@ -772,82 +841,82 @@ msgstr "No usado"
 msgid "None"
 msgstr "Ninguno"
 
 msgid "None"
 msgstr "Ninguno"
 
-#: cinelerra/assetpopup.C:443 cinelerra/assetpopup.C:450
+#: cinelerra/assetpopup.C:549 cinelerra/assetpopup.C:556
 #: plugins/titler/titler.h:39
 msgid "png"
 msgstr "png"
 
 #: plugins/titler/titler.h:39
 msgid "png"
 msgstr "png"
 
-#: cinelerra/assetpopup.C:444 cinelerra/assetpopup.C:451
+#: cinelerra/assetpopup.C:550 cinelerra/assetpopup.C:557
 msgid "jpeg"
 msgstr "jpg"
 
 msgid "jpeg"
 msgstr "jpg"
 
-#: cinelerra/assetpopup.C:445 cinelerra/assetpopup.C:452
+#: cinelerra/assetpopup.C:551 cinelerra/assetpopup.C:558
 msgid "tiff"
 msgstr "tiff"
 
 msgid "tiff"
 msgstr "tiff"
 
-#: cinelerra/assetpopup.C:446 cinelerra/assetpopup.C:453
+#: cinelerra/assetpopup.C:552 cinelerra/assetpopup.C:559
 msgid "ppm"
 msgstr "ppm"
 
 msgid "ppm"
 msgstr "ppm"
 
-#: cinelerra/assetpopup.C:458 cinelerra/loadfile.C:46
+#: cinelerra/assetpopup.C:564 cinelerra/loadfile.C:47
 msgid "Load files..."
 msgstr "Cargar archivos ..."
 
 msgid "Load files..."
 msgstr "Cargar archivos ..."
 
-#: cinelerra/assetpopup.C:490
+#: cinelerra/assetpopup.C:590
 msgid "Copy file list"
 msgstr "Copiar lista de archivos"
 
 msgid "Copy file list"
 msgstr "Copiar lista de archivos"
 
-#: cinelerra/assetpopup.C:532
+#: cinelerra/assetpopup.C:632
 msgid "Nothing selected"
 msgstr "Nada seleccionado"
 
 msgid "Nothing selected"
 msgstr "Nada seleccionado"
 
-#: cinelerra/assetpopup.C:581
+#: cinelerra/assetpopup.C:681
 msgid ": Copy File List"
 msgstr ": Copiar lista de archivos"
 
 msgid ": Copy File List"
 msgstr ": Copiar lista de archivos"
 
-#: cinelerra/assetpopup.C:599
+#: cinelerra/assetpopup.C:699
 msgid "List of asset paths:"
 msgstr "Lista de rutas de recursos:"
 
 msgid "List of asset paths:"
 msgstr "Lista de rutas de recursos:"
 
-#: cinelerra/assetpopup.C:625
+#: cinelerra/assetpopup.C:725
 msgid "Paste file list"
 msgstr "Pegar lista de archivo"
 
 msgid "Paste file list"
 msgstr "Pegar lista de archivo"
 
-#: cinelerra/assetpopup.C:713
+#: cinelerra/assetpopup.C:814
 msgid ": Paste File List"
 msgstr ": Pegar lista de archivo"
 
 msgid ": Paste File List"
 msgstr ": Pegar lista de archivo"
 
-#: cinelerra/assetpopup.C:731
+#: cinelerra/assetpopup.C:832
 msgid "Enter list of asset paths:"
 msgstr "Ingresar lista de rutas de recursos:"
 
 msgid "Enter list of asset paths:"
 msgstr "Ingresar lista de rutas de recursos:"
 
-#: cinelerra/assetpopup.C:757
+#: cinelerra/assetpopup.C:858
 msgid "Snapshot..."
 msgstr "Instantánea..."
 
 msgid "Snapshot..."
 msgstr "Instantánea..."
 
-#: cinelerra/assetpopup.C:799
+#: cinelerra/assetpopup.C:901
 msgid "snap"
 msgstr "instantánea"
 
 msgid "snap"
 msgstr "instantánea"
 
-#: cinelerra/assetpopup.C:870
+#: cinelerra/assetpopup.C:972
 msgid "snapshot render failed"
 msgstr "error en el renderizado de instantáneas"
 
 msgid "snapshot render failed"
 msgstr "error en el renderizado de instantáneas"
 
-#: cinelerra/assetpopup.C:878
+#: cinelerra/assetpopup.C:980
 msgid "Grabshot..."
 msgstr "Captura de imágenes...."
 
 msgid "Grabshot..."
 msgstr "Captura de imágenes...."
 
-#: cinelerra/assetpopup.C:1024
+#: cinelerra/assetpopup.C:1127
 msgid "grab"
 msgstr "captura"
 
 msgid "grab"
 msgstr "captura"
 
-#: cinelerra/assetpopup.C:1091
+#: cinelerra/assetpopup.C:1194
 msgid "grabshot render failed"
 msgstr "error en el renderizado de capturas"
 
 #: cinelerra/assetremove.C:32
 msgid ": Remove assets"
 msgid "grabshot render failed"
 msgstr "error en el renderizado de capturas"
 
 #: cinelerra/assetremove.C:32
 msgid ": Remove assets"
-msgstr ": Eliminar clips"
+msgstr ": Eliminar clips activos"
 
 #: cinelerra/assetremove.C:65
 msgid "Permanently remove from disk?"
 
 #: cinelerra/assetremove.C:65
 msgid "Permanently remove from disk?"
@@ -883,15 +952,20 @@ msgstr "Dispositivo configurado ALSA no soporta el funcionamiento del canal %d\n
 msgid " Configured ALSA device does not support %u Hz playback.\n"
 msgstr " Dispositivo configurado ALSA no es compatible con la reproducción %u Hz.\n"
 
 msgid " Configured ALSA device does not support %u Hz playback.\n"
 msgstr " Dispositivo configurado ALSA no es compatible con la reproducción %u Hz.\n"
 
+#: cinelerra/audioalsa.C:582
+#, c-format
+msgid "AudioALSA::write_buffer err %d(%s) at sample %jd\n"
+msgstr "AudioALSA::escritura_de_buffer err %d(%s) en la muestra %jd\n"
+
 #: cinelerra/audiooss.C:213 cinelerra/audiooss.C:215 cinelerra/audiooss.C:219
 #: cinelerra/audiooss.C:221
 #, c-format
 msgid "%s failed\n"
 #: cinelerra/audiooss.C:213 cinelerra/audiooss.C:215 cinelerra/audiooss.C:219
 #: cinelerra/audiooss.C:221
 #, c-format
 msgid "%s failed\n"
-msgstr "%s fallido\n"
+msgstr "%s falló\n"
 
 #: cinelerra/avc1394transport.C:175 cinelerra/playtransport.C:384
 msgid "Rewind ( Home )"
 
 #: cinelerra/avc1394transport.C:175 cinelerra/playtransport.C:384
 msgid "Rewind ( Home )"
-msgstr "Rebobinar (home)"
+msgstr "Rebobinar (inicio)"
 
 #: cinelerra/avc1394transport.C:200
 msgid "Fast Reverse ( + )"
 
 #: cinelerra/avc1394transport.C:200
 msgid "Fast Reverse ( + )"
@@ -899,11 +973,11 @@ msgstr "Invertir rápido (+)"
 
 #: cinelerra/avc1394transport.C:224
 msgid "Reverse Play ( 6 )"
 
 #: cinelerra/avc1394transport.C:224
 msgid "Reverse Play ( 6 )"
-msgstr "Reproducir invertir (6)"
+msgstr "Reproducir al revés (6)"
 
 #: cinelerra/avc1394transport.C:256
 msgid "Stop ( 0 )"
 
 #: cinelerra/avc1394transport.C:256
 msgid "Stop ( 0 )"
-msgstr "Stop (0)"
+msgstr "Parar (0)"
 
 #: cinelerra/avc1394transport.C:281
 msgid "Play ( 3 )"
 
 #: cinelerra/avc1394transport.C:281
 msgid "Play ( 3 )"
@@ -915,7 +989,7 @@ msgstr "Pausar"
 
 #: cinelerra/avc1394transport.C:337
 msgid "Fast Forward ( Enter )"
 
 #: cinelerra/avc1394transport.C:337
 msgid "Fast Forward ( Enter )"
-msgstr "Avanzar Rapido (Enter)"
+msgstr "Avanzar Rapido (Intro)"
 
 #: cinelerra/avc1394transport.C:365 cinelerra/playtransport.C:475
 msgid "Jump to end ( End )"
 
 #: cinelerra/avc1394transport.C:365 cinelerra/playtransport.C:475
 msgid "Jump to end ( End )"
@@ -947,7 +1021,7 @@ msgstr "Clips"
 
 #: cinelerra/awindowgui.C:94 cinelerra/binfolder.C:1783
 msgid "Media"
 
 #: cinelerra/awindowgui.C:94 cinelerra/binfolder.C:1783
 msgid "Media"
-msgstr "Medios de comunicación"
+msgstr "Medios Multimedia"
 
 #: cinelerra/awindowgui.C:95
 msgid "Proxy"
 
 #: cinelerra/awindowgui.C:95
 msgid "Proxy"
@@ -955,11 +1029,11 @@ msgstr "Proxy"
 
 #: cinelerra/awindowgui.C:100
 msgid "Full Play"
 
 #: cinelerra/awindowgui.C:100
 msgid "Full Play"
-msgstr "Reproducir completa"
+msgstr "Reproducir todo"
 
 #: cinelerra/awindowgui.C:101
 msgid "Mouse Over"
 
 #: cinelerra/awindowgui.C:101
 msgid "Mouse Over"
-msgstr "Puntero sobre"
+msgstr "Ratón sobre"
 
 #: cinelerra/awindowgui.C:102
 msgid "Src Target"
 
 #: cinelerra/awindowgui.C:102
 msgid "Src Target"
@@ -969,144 +1043,144 @@ msgstr "Objectivo de origen"
 msgid "No Play"
 msgstr "No Reproducir"
 
 msgid "No Play"
 msgstr "No Reproducir"
 
-#: cinelerra/awindowgui.C:962 cinelerra/awindowgui.C:1021
+#: cinelerra/awindowgui.C:977 cinelerra/awindowgui.C:1036
 #, c-format
 msgid "Reading %s"
 msgstr "Leyendo %s"
 
 #, c-format
 msgid "Reading %s"
 msgstr "Leyendo %s"
 
-#: cinelerra/awindowgui.C:1104 cinelerra/awindowgui.C:1153
+#: cinelerra/awindowgui.C:1119 cinelerra/awindowgui.C:1168
 #, c-format
 msgid "Rendering %s"
 msgstr "Renderizando %s"
 
 #, c-format
 msgid "Rendering %s"
 msgstr "Renderizando %s"
 
-#: cinelerra/awindowgui.C:1258
+#: cinelerra/awindowgui.C:1273
 msgid ": Resources"
 msgid ": Resources"
-msgstr "Recursos"
+msgstr "Recursos"
 
 
-#: cinelerra/awindowgui.C:1428 cinelerra/awindowgui.C:2364
-#: cinelerra/awindowgui.C:2384
+#: cinelerra/awindowgui.C:1443 cinelerra/awindowgui.C:2379
+#: cinelerra/awindowgui.C:2399
 msgid "awindowgui#Title"
 msgstr "Título"
 
 msgid "awindowgui#Title"
 msgstr "Título"
 
-#: cinelerra/awindowgui.C:1429 cinelerra/awindowgui.C:2365
+#: cinelerra/awindowgui.C:1444 cinelerra/awindowgui.C:2380
 msgid "Comments"
 msgstr "Comentarios"
 
 msgid "Comments"
 msgstr "Comentarios"
 
-#: cinelerra/awindowgui.C:1516
+#: cinelerra/awindowgui.C:1531
 msgid "Visibility"
 msgstr "Visibilidad"
 
 msgid "Visibility"
 msgstr "Visibilidad"
 
-#: cinelerra/awindowgui.C:1744
+#: cinelerra/awindowgui.C:1759
 msgid ": Remove plugin"
 msgstr ": Eliminar plugin"
 
 msgid ": Remove plugin"
 msgstr ": Eliminar plugin"
 
-#: cinelerra/awindowgui.C:1774
+#: cinelerra/awindowgui.C:1789
 msgid "remove plugin?"
 msgid "remove plugin?"
-msgstr "eliminar complemento?"
+msgstr "eliminar plugin?"
 
 
-#: cinelerra/awindowgui.C:1803
+#: cinelerra/awindowgui.C:1818
 #, c-format
 msgid "remove %s\n"
 msgstr "eliminar %s\n"
 
 #, c-format
 msgid "remove %s\n"
 msgstr "eliminar %s\n"
 
-#: cinelerra/awindowgui.C:2209
+#: cinelerra/awindowgui.C:2224
 msgid "Proxy clip"
 msgid "Proxy clip"
-msgstr "Información del clip"
+msgstr "Clip de Proxy"
 
 
-#: cinelerra/awindowgui.C:2383
+#: cinelerra/awindowgui.C:2398
 msgid "Time Stamps"
 msgstr "Marcas de tiempo"
 
 msgid "Time Stamps"
 msgstr "Marcas de tiempo"
 
-#: cinelerra/awindowgui.C:3131
+#: cinelerra/awindowgui.C:3146
 msgid "No info available"
 msgstr "Ninguna información disponible"
 
 msgid "No info available"
 msgstr "Ninguna información disponible"
 
-#: cinelerra/awindowgui.C:3224
+#: cinelerra/awindowgui.C:3239
 msgid "Delete asset from disk"
 msgstr "Borrar clip desde el disco"
 
 msgid "Delete asset from disk"
 msgstr "Borrar clip desde el disco"
 
-#: cinelerra/awindowgui.C:3237
+#: cinelerra/awindowgui.C:3252
 msgid "Delete asset from project"
 msgstr "Borrar los clips de proyecto"
 
 msgid "Delete asset from project"
 msgstr "Borrar los clips de proyecto"
 
-#: cinelerra/awindowgui.C:3266
+#: cinelerra/awindowgui.C:3281
 msgid "Redraw index"
 msgstr "Volver a dibujar índice"
 
 msgid "Redraw index"
 msgstr "Volver a dibujar índice"
 
-#: cinelerra/awindowgui.C:3279
+#: cinelerra/awindowgui.C:3294
 msgid "Paste asset on recordable tracks"
 msgstr "Pegar clip en pistas grabables"
 
 msgid "Paste asset on recordable tracks"
 msgstr "Pegar clip en pistas grabables"
 
-#: cinelerra/awindowgui.C:3292
+#: cinelerra/awindowgui.C:3307
 msgid "Append asset in new tracks"
 msgstr "Agregar clip en una nueva pista"
 
 msgid "Append asset in new tracks"
 msgstr "Agregar clip en una nueva pista"
 
-#: cinelerra/awindowgui.C:3305
+#: cinelerra/awindowgui.C:3320
 msgid "View asset"
 msgstr "Ver recurso"
 
 msgid "View asset"
 msgstr "Ver recurso"
 
-#: cinelerra/awindowgui.C:3349 cinelerra/fileffmpeg.C:1015
+#: cinelerra/awindowgui.C:3364 cinelerra/fileffmpeg.C:1015
 msgid "ffmpeg"
 msgstr "ffmpeg"
 
 msgid "ffmpeg"
 msgstr "ffmpeg"
 
-#: cinelerra/awindowgui.C:3350
+#: cinelerra/awindowgui.C:3365
 msgid "ladspa"
 msgstr "ladspa"
 
 msgid "ladspa"
 msgstr "ladspa"
 
-#: cinelerra/awindowgui.C:3351
+#: cinelerra/awindowgui.C:3366
 msgid "lv2"
 msgstr "lv2"
 
 msgid "lv2"
 msgstr "lv2"
 
-#: cinelerra/awindowgui.C:3352
+#: cinelerra/awindowgui.C:3367
 msgid "audio_tools"
 msgid "audio_tools"
-msgstr "audio_tools"
+msgstr "audio_herramientas"
 
 
-#: cinelerra/awindowgui.C:3353
+#: cinelerra/awindowgui.C:3368
 msgid "audio_transitions"
 msgid "audio_transitions"
-msgstr "audio_transitions"
+msgstr "audio_transiciones"
 
 
-#: cinelerra/awindowgui.C:3354
+#: cinelerra/awindowgui.C:3369
 msgid "blending"
 msgstr "mezcla"
 
 msgid "blending"
 msgstr "mezcla"
 
-#: cinelerra/awindowgui.C:3355
+#: cinelerra/awindowgui.C:3370
 msgid "colors"
 msgstr "colores"
 
 msgid "colors"
 msgstr "colores"
 
-#: cinelerra/awindowgui.C:3356
+#: cinelerra/awindowgui.C:3371
 msgid "exotic"
 msgstr "exótico"
 
 msgid "exotic"
 msgstr "exótico"
 
-#: cinelerra/awindowgui.C:3357
+#: cinelerra/awindowgui.C:3372
 msgid "transforms"
 msgstr "transformadas"
 
 msgid "transforms"
 msgstr "transformadas"
 
-#: cinelerra/awindowgui.C:3358
+#: cinelerra/awindowgui.C:3373
 msgid "tv_effects"
 msgid "tv_effects"
-msgstr "tv_effects"
+msgstr "tv_efectos"
 
 
-#: cinelerra/awindowgui.C:3359
+#: cinelerra/awindowgui.C:3374
 msgid "video_tools"
 msgid "video_tools"
-msgstr "video_tools"
+msgstr "video_herramientas"
 
 
-#: cinelerra/awindowgui.C:3360
+#: cinelerra/awindowgui.C:3375
 msgid "video_transitions"
 msgid "video_transitions"
-msgstr "video_transitions"
+msgstr "video_transiciones"
 
 
-#: cinelerra/awindowgui.C:3472
+#: cinelerra/awindowgui.C:3487
 msgid "Display icons packed"
 msgstr "Mostrar iconos empaquetados"
 
 msgid "Display icons packed"
 msgstr "Mostrar iconos empaquetados"
 
-#: cinelerra/awindowgui.C:3475
+#: cinelerra/awindowgui.C:3490
 msgid "Display icon list"
 msgstr "Mostrar lista de íconos"
 
 msgid "Display icon list"
 msgstr "Mostrar lista de íconos"
 
-#: cinelerra/awindowgui.C:3485 cinelerra/clippopup.C:166
+#: cinelerra/awindowgui.C:3500 cinelerra/clippopup.C:173
 #: cinelerra/folderlistmenu.C:92 cinelerra/proxypopup.C:131
 msgid "Sort items"
 msgstr "Organizar objectos"
 
 #: cinelerra/folderlistmenu.C:92 cinelerra/proxypopup.C:131
 msgid "Sort items"
 msgstr "Organizar objectos"
 
-#: cinelerra/awindowgui.C:3539 cinelerra/channeledit.C:476
+#: cinelerra/awindowgui.C:3554 cinelerra/channeledit.C:476
 msgid "Select"
 msgstr "Seleccionar"
 
 msgid "Select"
 msgstr "Seleccionar"
 
@@ -1134,18 +1208,18 @@ msgstr "Existe"
 #: cinelerra/recordengine.C:701
 #, c-format
 msgid "Untimed"
 #: cinelerra/recordengine.C:701
 #, c-format
 msgid "Untimed"
-msgstr "No programado"
+msgstr "Sin Tiempo"
 
 #: cinelerra/batch.C:139 cinelerra/recordengine.C:694
 #: cinelerra/recordengine.C:702
 #, c-format
 msgid "Timed"
 
 #: cinelerra/batch.C:139 cinelerra/recordengine.C:694
 #: cinelerra/recordengine.C:702
 #, c-format
 msgid "Timed"
-msgstr "Programado"
+msgstr "Cronometrado"
 
 
-#: cinelerra/batch.C:141 cinelerra/batchrender.C:960 cinelerra/ffmpeg.C:3068
-#: cinelerra/ffmpeg.C:3176 cinelerra/file.C:1257 cinelerra/file.C:1284
-#: cinelerra/interfaceprefs.C:542 cinelerra/interlacemodes.h:27
-#: cinelerra/loadmode.C:110 cinelerra/new.C:873 cinelerra/record.C:736
+#: cinelerra/batch.C:141 cinelerra/batchrender.C:960 cinelerra/ffmpeg.C:3091
+#: cinelerra/ffmpeg.C:3199 cinelerra/file.C:1263 cinelerra/file.C:1290
+#: cinelerra/interfaceprefs.C:551 cinelerra/interlacemodes.h:27
+#: cinelerra/loadmode.C:116 cinelerra/new.C:873 cinelerra/record.C:741
 #: cinelerra/vdeviceprefs.C:657 plugins/motion2point/motionwindow.C:791
 #: plugins/motion2point/motionwindow.C:862 plugins/timefront/timefront.C:421
 #: plugins/titler/titler.C:2336
 #: cinelerra/vdeviceprefs.C:657 plugins/motion2point/motionwindow.C:791
 #: plugins/motion2point/motionwindow.C:862 plugins/timefront/timefront.C:421
 #: plugins/titler/titler.C:2336
@@ -1167,11 +1241,11 @@ msgstr "Etiquetado"
 msgid "Farmed"
 msgstr "Criado"
 
 msgid "Farmed"
 msgstr "Criado"
 
-#: cinelerra/batchrender.C:65 plugins/compressor/compressor.C:1021
+#: cinelerra/batchrender.C:65 cinelerra/compressortools.C:522
 msgid "Output"
 msgstr "Salida"
 
 msgid "Output"
 msgstr "Salida"
 
-#: cinelerra/batchrender.C:65
+#: cinelerra/batchrender.C:65 cinelerra/loadmode.C:55
 msgid "EDL"
 msgstr "EDL"
 
 msgid "EDL"
 msgstr "EDL"
 
@@ -1181,13 +1255,13 @@ msgstr "Transcurrido"
 
 #: cinelerra/batchrender.C:69
 msgid "Batch Render..."
 
 #: cinelerra/batchrender.C:69
 msgid "Batch Render..."
-msgstr "Batch Render..."
+msgstr "Renderizar por lotes..."
 
 #: cinelerra/batchrender.C:69
 msgid "Shift-B"
 msgstr "Mayús-B"
 
 
 #: cinelerra/batchrender.C:69
 msgid "Shift-B"
 msgstr "Mayús-B"
 
-#: cinelerra/batchrender.C:390 cinelerra/bdcreate.C:291
+#: cinelerra/batchrender.C:390 cinelerra/bdcreate.C:294
 #: cinelerra/dvdcreate.C:359
 #, c-format
 msgid "Unable to save: %s"
 #: cinelerra/dvdcreate.C:359
 #, c-format
 msgid "Unable to save: %s"
@@ -1203,7 +1277,7 @@ msgstr "pulse Cancelar para abandonar renderizado por lotes"
 msgid "EDL %s not found.\n"
 msgstr "EDL %s no encontrado.\n"
 
 msgid "EDL %s not found.\n"
 msgstr "EDL %s no encontrado.\n"
 
-#: cinelerra/batchrender.C:493 cinelerra/file.C:236 cinelerra/formatcheck.C:47
+#: cinelerra/batchrender.C:493 cinelerra/file.C:237 cinelerra/formatcheck.C:47
 #: cinelerra/formatcheck.C:58 cinelerra/formatcheck.C:67
 #: cinelerra/menueffects.C:148 cinelerra/menueffects.C:159
 #: cinelerra/menueffects.C:247 cinelerra/menueffects.C:255
 #: cinelerra/formatcheck.C:58 cinelerra/formatcheck.C:67
 #: cinelerra/menueffects.C:148 cinelerra/menueffects.C:159
 #: cinelerra/menueffects.C:247 cinelerra/menueffects.C:255
@@ -1238,7 +1312,7 @@ msgstr "%d trabajo EDLs de archivo de renderizado con y sin etiquetas\n"
 
 #: cinelerra/batchrender.C:726
 msgid ": Batch Render"
 
 #: cinelerra/batchrender.C:726
 msgid ": Batch Render"
-msgstr ": Batch Render"
+msgstr ": Renderizar por lotes"
 
 #: cinelerra/batchrender.C:758
 msgid "Output path:"
 
 #: cinelerra/batchrender.C:758
 msgid "Output path:"
@@ -1271,17 +1345,17 @@ msgid "Close"
 msgstr "Cerrar"
 
 #: cinelerra/batchrender.C:1040 cinelerra/recordbatches.C:469
 msgstr "Cerrar"
 
 #: cinelerra/batchrender.C:1040 cinelerra/recordbatches.C:469
-#: plugins/crikey/crikeywindow.C:593 plugins/sketcher/sketcherwindow.C:833
-#: plugins/sketcher/sketcherwindow.C:1215 plugins/tracer/tracerwindow.C:598
+#: plugins/crikey/crikeywindow.C:593 plugins/sketcher/sketcherwindow.C:922
+#: plugins/sketcher/sketcherwindow.C:1304 plugins/tracer/tracerwindow.C:598
 msgid "New"
 msgstr "Nuevo"
 
 #: cinelerra/batchrender.C:1052 cinelerra/channeledit.C:577
 msgid "New"
 msgstr "Nuevo"
 
 #: cinelerra/batchrender.C:1052 cinelerra/channeledit.C:577
-#: cinelerra/clippopup.C:333 cinelerra/cwindowtool.C:1905
+#: cinelerra/clippopup.C:340 cinelerra/cwindowtool.C:1905
 #: cinelerra/cwindowtool.C:1959 cinelerra/dbwindow.C:240
 #: cinelerra/keyframegui.C:742 cinelerra/labelpopup.C:87
 #: cinelerra/recordbatches.C:487 plugins/piano/piano.C:835
 #: cinelerra/cwindowtool.C:1959 cinelerra/dbwindow.C:240
 #: cinelerra/keyframegui.C:742 cinelerra/labelpopup.C:87
 #: cinelerra/recordbatches.C:487 plugins/piano/piano.C:835
-#: plugins/synthesizer/synthesizer.C:1305
+#: plugins/synthesizer/synthesizer.C:1311
 msgid "Delete"
 msgstr "Borrar"
 
 msgid "Delete"
 msgstr "Borrar"
 
@@ -1333,20 +1407,20 @@ msgstr "Inicio"
 msgid "warn if jobs/session mismatched"
 msgstr "advertir si los trabajos / sesiones no coinciden"
 
 msgid "warn if jobs/session mismatched"
 msgstr "advertir si los trabajos / sesiones no coinciden"
 
-#: cinelerra/batchrender.C:1403 cinelerra/bdcreate.C:690
+#: cinelerra/batchrender.C:1403 cinelerra/bdcreate.C:689
 #: cinelerra/dvdcreate.C:822 cinelerra/performanceprefs.C:400
 msgid "Use render farm"
 msgstr "Usar granja de renderizado"
 
 #: cinelerra/dvdcreate.C:822 cinelerra/performanceprefs.C:400
 msgid "Use render farm"
 msgstr "Usar granja de renderizado"
 
-#: cinelerra/bdcreate.C:80
+#: cinelerra/bdcreate.C:83
 msgid "BD Render..."
 msgstr "BD Render ..."
 
 msgid "BD Render..."
 msgstr "BD Render ..."
 
-#: cinelerra/bdcreate.C:80
+#: cinelerra/bdcreate.C:83
 msgid "Ctrl-d"
 msgstr "Ctrl-d"
 
 msgid "Ctrl-d"
 msgstr "Ctrl-d"
 
-#: cinelerra/bdcreate.C:159 cinelerra/dvdcreate.C:165
+#: cinelerra/bdcreate.C:162 cinelerra/dvdcreate.C:165
 #, c-format
 msgid ""
 "Unable to save: %s\n"
 #, c-format
 msgid ""
 "Unable to save: %s\n"
@@ -1355,132 +1429,132 @@ msgstr ""
 "No se puede guardar: %s\n"
 "-- %s"
 
 "No se puede guardar: %s\n"
 "-- %s"
 
-#: cinelerra/bdcreate.C:226 cinelerra/dvdcreate.C:295
+#: cinelerra/bdcreate.C:229 cinelerra/dvdcreate.C:295
 #, c-format
 msgid "No EDL/Session"
 msgstr "No EDL / Sesión"
 
 #, c-format
 msgid "No EDL/Session"
 msgstr "No EDL / Sesión"
 
-#: cinelerra/bdcreate.C:235 cinelerra/dvdcreate.C:303
+#: cinelerra/bdcreate.C:238 cinelerra/dvdcreate.C:303
 #, c-format
 msgid "No content: %s"
 msgstr "Sin contenido: %s"
 
 #, c-format
 msgid "No content: %s"
 msgstr "Sin contenido: %s"
 
-#: cinelerra/bdcreate.C:243 cinelerra/dvdcreate.C:311
+#: cinelerra/bdcreate.C:246 cinelerra/dvdcreate.C:311
 #, c-format
 msgid ""
 "Unable to create directory: %s\n"
 "-- %s"
 msgstr ""
 #, c-format
 msgid ""
 "Unable to create directory: %s\n"
 "-- %s"
 msgstr ""
-"No se puede crear el directorio: %s\n"
+"No se puede crear la carpeta: %s\n"
 "-- %s"
 
 "-- %s"
 
-#: cinelerra/bdcreate.C:387 cinelerra/dvdcreate.C:509
+#: cinelerra/bdcreate.C:386 cinelerra/dvdcreate.C:509
 #: plugins/scaleratio/scaleratio.C:96
 msgid "Scale Ratio"
 msgstr "Relación de escala"
 
 #: plugins/scaleratio/scaleratio.C:96
 msgid "Scale Ratio"
 msgstr "Relación de escala"
 
-#: cinelerra/bdcreate.C:424
+#: cinelerra/bdcreate.C:423
 msgid "create bd"
 msgstr "crear bd"
 
 msgid "create bd"
 msgstr "crear bd"
 
-#: cinelerra/bdcreate.C:490
+#: cinelerra/bdcreate.C:489
 msgid "Must be root to mount UDFS images\n"
 msgstr "Debe ser root para montar imágenes UDFS\n"
 
 msgid "Must be root to mount UDFS images\n"
 msgstr "Debe ser root para montar imágenes UDFS\n"
 
-#: cinelerra/bdcreate.C:500 cinelerra/dvdcreate.C:630
+#: cinelerra/bdcreate.C:499 cinelerra/dvdcreate.C:630
 msgid "end setup, start batch render"
 msgstr "fin de configuración, comienzo de renderizado por lotes"
 
 msgid "end setup, start batch render"
 msgstr "fin de configuración, comienzo de renderizado por lotes"
 
-#: cinelerra/bdcreate.C:577 cinelerra/dvdcreate.C:708
+#: cinelerra/bdcreate.C:576 cinelerra/dvdcreate.C:708
 msgid "disk space: "
 msgstr "espacio del disco: "
 
 msgid "disk space: "
 msgstr "espacio del disco: "
 
-#: cinelerra/bdcreate.C:619 cinelerra/dvdcreate.C:751
+#: cinelerra/bdcreate.C:618 cinelerra/dvdcreate.C:751
 #: plugins/deinterlace/deinterlace.C:84 plugins/denoisemjpeg/denoisemjpeg.C:248
 msgid "Deinterlace"
 msgstr "Desentrelazado"
 
 #: plugins/deinterlace/deinterlace.C:84 plugins/denoisemjpeg/denoisemjpeg.C:248
 msgid "Deinterlace"
 msgstr "Desentrelazado"
 
-#: cinelerra/bdcreate.C:639 cinelerra/dvdcreate.C:771 plugins/ivtc/ivtc.C:76
+#: cinelerra/bdcreate.C:638 cinelerra/dvdcreate.C:771 plugins/ivtc/ivtc.C:76
 msgid "Inverse Telecine"
 msgstr "Telecine Inverso"
 
 msgid "Inverse Telecine"
 msgstr "Telecine Inverso"
 
-#: cinelerra/bdcreate.C:659 cinelerra/dvdcreate.C:791
+#: cinelerra/bdcreate.C:658 cinelerra/dvdcreate.C:791
 msgid "Resize Tracks"
 msgstr "Cambiar el tamaño de las Pistas"
 
 msgid "Resize Tracks"
 msgstr "Cambiar el tamaño de las Pistas"
 
-#: cinelerra/bdcreate.C:670 cinelerra/dvdcreate.C:802
-#: cinelerra/scopewindow.C:1330 plugins/colorbalance/colorbalance.C:507
+#: cinelerra/bdcreate.C:669 cinelerra/dvdcreate.C:802
+#: cinelerra/scopewindow.C:1330 plugins/colorbalance/colorbalance.C:506
 #: plugins/gamma/gamma.C:451 plugins/histogram/histogram.C:99
 #: plugins/interpolate/interpolate.C:246
 msgid "Histogram"
 msgstr "Histograma"
 
 #: plugins/gamma/gamma.C:451 plugins/histogram/histogram.C:99
 #: plugins/interpolate/interpolate.C:246
 msgid "Histogram"
 msgstr "Histograma"
 
-#: cinelerra/bdcreate.C:680 cinelerra/dvdcreate.C:812
+#: cinelerra/bdcreate.C:679 cinelerra/dvdcreate.C:812
 msgid "Chapters at Labels"
 msgstr "Capítulos en las etiquetas"
 
 msgid "Chapters at Labels"
 msgstr "Capítulos en las etiquetas"
 
-#: cinelerra/bdcreate.C:701 cinelerra/dvdcreate.C:832
+#: cinelerra/bdcreate.C:700 cinelerra/dvdcreate.C:832
 msgid "Audio 5.1"
 msgstr "Audio 5.1"
 
 msgid "Audio 5.1"
 msgstr "Audio 5.1"
 
-#: cinelerra/bdcreate.C:712
+#: cinelerra/bdcreate.C:711
 msgid ": Create BD"
 msgstr ": Crear BD"
 
 msgid ": Create BD"
 msgstr ": Crear BD"
 
-#: cinelerra/bdcreate.C:749 cinelerra/channeledit.C:990
+#: cinelerra/bdcreate.C:748 cinelerra/channeledit.C:990
 #: cinelerra/clipedit.C:163 cinelerra/dvdcreate.C:890
 msgid "Title:"
 msgstr "Título:"
 
 #: cinelerra/clipedit.C:163 cinelerra/dvdcreate.C:890
 msgid "Title:"
 msgstr "Título:"
 
-#: cinelerra/bdcreate.C:755 cinelerra/dvdcreate.C:896
+#: cinelerra/bdcreate.C:754 cinelerra/dvdcreate.C:896
 msgid "Work path:"
 msgstr "Camino del trabajo:"
 
 msgid "Work path:"
 msgstr "Camino del trabajo:"
 
-#: cinelerra/bdcreate.C:762 cinelerra/dvdcreate.C:903
+#: cinelerra/bdcreate.C:761 cinelerra/dvdcreate.C:903
 msgid "Work path"
 msgstr "Camino del trabajo"
 
 msgid "Work path"
 msgstr "Camino del trabajo"
 
-#: cinelerra/bdcreate.C:762 cinelerra/dvdcreate.C:903
+#: cinelerra/bdcreate.C:761 cinelerra/dvdcreate.C:903
 msgid "Select a Work directory:"
 msgid "Select a Work directory:"
-msgstr "Seleccionar un directorio de trabajo:"
+msgstr "Seleccionar una carpeta de trabajo:"
 
 
-#: cinelerra/bdcreate.C:768 cinelerra/dvdcreate.C:909
+#: cinelerra/bdcreate.C:767 cinelerra/dvdcreate.C:909
 msgid "Media:"
 msgid "Media:"
-msgstr "Medios de comunicación:"
+msgstr "Medios Multimedia:"
 
 
-#: cinelerra/bdcreate.C:779 cinelerra/dvdcreate.C:920 cinelerra/recordgui.C:224
+#: cinelerra/bdcreate.C:778 cinelerra/dvdcreate.C:920 cinelerra/recordgui.C:224
 msgid "Format:"
 msgstr "Formato:"
 
 msgid "Format:"
 msgstr "Formato:"
 
-#: cinelerra/bdcreate.C:786 cinelerra/dvdcreate.C:926
+#: cinelerra/bdcreate.C:785 cinelerra/dvdcreate.C:926
 #: cinelerra/resizetrackthread.C:125 plugins/pitch/pitch.C:418
 #: plugins/scale/scalewin.C:52
 msgid "Scale:"
 msgstr "Escala:"
 
 #: cinelerra/resizetrackthread.C:125 plugins/pitch/pitch.C:418
 #: plugins/scale/scalewin.C:52
 msgid "Scale:"
 msgstr "Escala:"
 
-#: cinelerra/bdcreate.C:1020
+#: cinelerra/bdcreate.C:1019
 msgid "* non-standard format"
 msgstr "* formato no estandar"
 
 msgid "* non-standard format"
 msgstr "* formato no estandar"
 
-#: cinelerra/binfolder.C:39
+#: cinelerra/binfolder.C:39 plugins/sketcher/sketcherwindow.C:296
 msgid "Off"
 msgid "Off"
-msgstr "apagado"
+msgstr "Apagado"
 
 #: cinelerra/binfolder.C:40
 msgid "And"
 
 #: cinelerra/binfolder.C:40
 msgid "And"
-msgstr "y"
+msgstr "And"
 
 #: cinelerra/binfolder.C:41
 msgid "Or"
 
 #: cinelerra/binfolder.C:41
 msgid "Or"
-msgstr "o"
+msgstr "Or"
 
 #: cinelerra/binfolder.C:42
 msgid "And Not"
 
 #: cinelerra/binfolder.C:42
 msgid "And Not"
-msgstr "y no"
+msgstr "No And"
 
 #: cinelerra/binfolder.C:43
 msgid "Or Not"
 
 #: cinelerra/binfolder.C:43
 msgid "Or Not"
-msgstr "o no"
+msgstr "No Or"
 
 #: cinelerra/binfolder.C:47
 msgid "Patterns"
 
 #: cinelerra/binfolder.C:47
 msgid "Patterns"
@@ -1508,7 +1582,7 @@ msgstr "Altura"
 
 #: cinelerra/binfolder.C:53 cinelerra/performanceprefs.C:227
 msgid "Framerate"
 
 #: cinelerra/binfolder.C:53 cinelerra/performanceprefs.C:227
 msgid "Framerate"
-msgstr "Fotogramas por segundos"
+msgstr "FPS"
 
 #: cinelerra/binfolder.C:54
 msgid "Samplerate"
 
 #: cinelerra/binfolder.C:54
 msgid "Samplerate"
@@ -1536,7 +1610,7 @@ msgstr "Mayor o igual >="
 
 #: cinelerra/binfolder.C:63
 msgid "Gt  > "
 
 #: cinelerra/binfolder.C:63
 msgid "Gt  > "
-msgstr "Mayor >"
+msgstr "Mayor > "
 
 #: cinelerra/binfolder.C:64
 msgid "Ne  !="
 
 #: cinelerra/binfolder.C:64
 msgid "Ne  !="
@@ -1548,7 +1622,7 @@ msgstr "Menor o igual <="
 
 #: cinelerra/binfolder.C:66
 msgid "Lt  < "
 
 #: cinelerra/binfolder.C:66
 msgid "Lt  < "
-msgstr "Menor <"
+msgstr "Menor < "
 
 #: cinelerra/binfolder.C:67
 msgid "Matches"
 
 #: cinelerra/binfolder.C:67
 msgid "Matches"
@@ -1626,7 +1700,7 @@ msgstr "Objetivo"
 msgid "Op"
 msgstr "Op"
 
 msgid "Op"
 msgstr "Op"
 
-#: cinelerra/binfolder.C:1460 cinelerra/colorpicker.C:209
+#: cinelerra/binfolder.C:1460 cinelerra/colorpicker.C:259
 #: cinelerra/keyframegui.C:57 plugins/histogram/histogramwindow.C:63
 #: plugins/histogram_bezier/bistogramwindow.C:68
 msgid "Value"
 #: cinelerra/keyframegui.C:57 plugins/histogram/histogramwindow.C:63
 #: plugins/histogram_bezier/bistogramwindow.C:68
 msgid "Value"
@@ -1634,26 +1708,25 @@ msgstr "Valor"
 
 #: cinelerra/binfolder.C:1611 cinelerra/shbtnprefs.C:152
 #: plugins/overlayaudio/overlayaudio.C:174 plugins/piano/piano.C:814
 
 #: cinelerra/binfolder.C:1611 cinelerra/shbtnprefs.C:152
 #: plugins/overlayaudio/overlayaudio.C:174 plugins/piano/piano.C:814
-#: plugins/synthesizer/synthesizer.C:1285
+#: plugins/synthesizer/synthesizer.C:1291
 msgid "Add"
 msgstr "Agregar"
 
 msgid "Add"
 msgstr "Agregar"
 
-#: cinelerra/binfolder.C:1635 cinelerra/mainmenu.C:940
+#: cinelerra/binfolder.C:1635 cinelerra/mainmenu.C:944
 #: cinelerra/shbtnprefs.C:172
 msgid "Del"
 #: cinelerra/shbtnprefs.C:172
 msgid "Del"
-msgstr "Del"
+msgstr "Supr"
 
 #: cinelerra/binfolder.C:1655 cinelerra/cwindowtool.C:367
 #: cinelerra/fileffmpeg.C:1092 cinelerra/fileffmpeg.C:1497
 
 #: cinelerra/binfolder.C:1655 cinelerra/cwindowtool.C:367
 #: cinelerra/fileffmpeg.C:1092 cinelerra/fileffmpeg.C:1497
-#: cinelerra/keyframegui.C:780 cinelerra/loadfile.C:204
-#: cinelerra/loadfile.C:214 cinelerra/loadfile.C:216
+#: cinelerra/keyframegui.C:780 cinelerra/loadfile.C:199
 #: cinelerra/mixersalign.C:428 cinelerra/mixersalign.C:436
 #: cinelerra/plugindialog.C:287 cinelerra/plugindialog.C:360
 #: cinelerra/plugindialog.C:473 cinelerra/pluginfclient.C:218
 #: cinelerra/pluginfclient.C:570 cinelerra/pluginfclient.C:601
 #: cinelerra/pluginlv2gui.C:98 cinelerra/pluginlv2gui.C:225
 #: cinelerra/mixersalign.C:428 cinelerra/mixersalign.C:436
 #: cinelerra/plugindialog.C:287 cinelerra/plugindialog.C:360
 #: cinelerra/plugindialog.C:473 cinelerra/pluginfclient.C:218
 #: cinelerra/pluginfclient.C:570 cinelerra/pluginfclient.C:601
 #: cinelerra/pluginlv2gui.C:98 cinelerra/pluginlv2gui.C:225
-#: cinelerra/preferencesthread.C:641 cinelerra/preferencesthread.C:643
-#: cinelerra/setformat.C:805
+#: cinelerra/preferencesthread.C:644 cinelerra/preferencesthread.C:646
+#: cinelerra/setformat.C:800
 msgid "Apply"
 msgstr "Aplicar"
 
 msgid "Apply"
 msgstr "Aplicar"
 
@@ -1663,7 +1736,7 @@ msgstr "Nombre de carpeta:"
 
 #: cinelerra/binfolder.C:1692
 msgid "media bin"
 
 #: cinelerra/binfolder.C:1692
 msgid "media bin"
-msgstr "medios de comunicación"
+msgstr "contenedor de medios"
 
 #: cinelerra/binfolder.C:1692
 msgid "clip bin"
 
 #: cinelerra/binfolder.C:1692
 msgid "clip bin"
@@ -1695,7 +1768,7 @@ msgstr "BRender::set_video_map %jd: intento de ajustarlo fuera del mapa %jd.\n"
 msgid "Look for file"
 msgstr "Busca el archivo"
 
 msgid "Look for file"
 msgstr "Busca el archivo"
 
-#: cinelerra/canvas.C:921
+#: cinelerra/canvas.C:923
 msgid "Windowed"
 msgstr "Ventana"
 
 msgid "Windowed"
 msgstr "Ventana"
 
@@ -1719,7 +1792,7 @@ msgstr "Zoom 50%"
 msgid "Zoom 75%"
 msgstr "Zoom 75%"
 
 msgid "Zoom 75%"
 msgstr "Zoom 75%"
 
-#: cinelerra/canvas.C:972 cinelerra/recordmonitor.C:880
+#: cinelerra/canvas.C:972 cinelerra/recordmonitor.C:886
 msgid "Zoom 100%"
 msgstr "Zoom 100%"
 
 msgid "Zoom 100%"
 msgstr "Zoom 100%"
 
@@ -1779,15 +1852,15 @@ msgstr "Mayús-F12"
 msgid "Reset translation"
 msgstr "Restablecer la traducción"
 
 msgid "Reset translation"
 msgstr "Restablecer la traducción"
 
-#: cinelerra/canvas.C:1106 cinelerra/plugintoggles.C:76
+#: cinelerra/canvas.C:1105 cinelerra/plugintoggles.C:76
 msgid "Show controls"
 msgstr "Mostrar controles"
 
 msgid "Show controls"
 msgstr "Mostrar controles"
 
-#: cinelerra/canvas.C:1108
+#: cinelerra/canvas.C:1105
 msgid "Hide controls"
 msgstr "Ocultar controles"
 
 msgid "Hide controls"
 msgstr "Ocultar controles"
 
-#: cinelerra/canvas.C:1139
+#: cinelerra/canvas.C:1122
 msgid "Close source"
 msgstr "Cerrar origen"
 
 msgid "Close source"
 msgstr "Cerrar origen"
 
@@ -1910,6 +1983,8 @@ msgid "Norm:"
 msgstr "Norma:"
 
 #: cinelerra/channeledit.C:648 cinelerra/channeledit.C:1031
 msgstr "Norma:"
 
 #: cinelerra/channeledit.C:648 cinelerra/channeledit.C:1031
+#: plugins/compressor/compressor.C:440
+#: plugins/compressormulti/comprmultigui.C:152
 msgid "Input:"
 msgstr "Entrar:"
 
 msgid "Input:"
 msgstr "Entrar:"
 
@@ -2026,7 +2101,7 @@ msgstr "buscar títulos de eventos / info"
 #: cinelerra/channelinfo.C:1100
 #, c-format
 msgid "bad scan time: %s\n"
 #: cinelerra/channelinfo.C:1100
 #, c-format
 msgid "bad scan time: %s\n"
-msgstr "Mal tiempo de escaneado: %s\n"
+msgstr "tiempo erroneo de escaneado: %s\n"
 
 #: cinelerra/channelinfo.C:1107
 #, c-format
 
 #: cinelerra/channelinfo.C:1107
 #, c-format
@@ -2119,12 +2194,12 @@ msgid "Delete all clips."
 msgstr "Borrar todos los clips."
 
 #: cinelerra/channelinfo.C:1932 cinelerra/recordbatches.C:472
 msgstr "Borrar todos los clips."
 
 #: cinelerra/channelinfo.C:1932 cinelerra/recordbatches.C:472
-#: cinelerra/recordgui.C:922
+#: cinelerra/recordgui.C:965
 msgid "Create new clip."
 msgstr "Crear nuevo clip."
 
 #: cinelerra/channelinfo.C:1945 cinelerra/recordbatches.C:490
 msgid "Create new clip."
 msgstr "Crear nuevo clip."
 
 #: cinelerra/channelinfo.C:1945 cinelerra/recordbatches.C:490
-#: cinelerra/recordgui.C:935
+#: cinelerra/recordgui.C:978
 msgid "Delete clip."
 msgstr "Eliminar clip."
 
 msgid "Delete clip."
 msgstr "Eliminar clip."
 
@@ -2152,89 +2227,75 @@ msgstr ": La información del clip"
 msgid "Comments:"
 msgstr "Comentarios:"
 
 msgid "Comments:"
 msgstr "Comentarios:"
 
-#: cinelerra/clippopup.C:356
+#: cinelerra/clippopup.C:362
 msgid "Paste Clip"
 msgstr "Pegar clip"
 
 msgid "Paste Clip"
 msgstr "Pegar clip"
 
-#: cinelerra/clippopup.C:378
+#: cinelerra/clippopup.C:384
 msgid "paste clip: "
 msgstr "pegar clip: "
 
 msgid "paste clip: "
 msgstr "pegar clip: "
 
-#: cinelerra/clippopup.C:422
-msgid "Nest"
-msgstr "Anidar"
+#: cinelerra/clippopup.C:431
+msgid "Nest to Media"
+msgstr "Anidar en Medios"
 
 
-#: cinelerra/clippopup.C:445
-#, c-format
-msgid "Nested_%02d%02d%02d-%02d%02d%02d"
-msgstr "Anidado_%02d%02d%02d-%02d%02d%02d"
-
-#: cinelerra/clippopup.C:458
-#, c-format
-msgid "Nested: %s"
-msgstr "Anidado: %s"
-
-#: cinelerra/clippopup.C:478
-msgid "UnNest"
-msgstr "Desanidado"
-
-#: cinelerra/colorpicker.C:77
+#: cinelerra/colorpicker.C:74
 msgid ": "
 msgstr ": "
 
 msgid ": "
 msgstr ": "
 
-#: cinelerra/colorpicker.C:78
+#: cinelerra/colorpicker.C:75
 msgid "Color Picker"
 msgstr "Selector de color"
 
 msgid "Color Picker"
 msgstr "Selector de color"
 
-#: cinelerra/colorpicker.C:179
+#: cinelerra/colorpicker.C:229
 msgid "colorpicker#H:"
 msgstr "H:"
 
 msgid "colorpicker#H:"
 msgstr "H:"
 
-#: cinelerra/colorpicker.C:180
+#: cinelerra/colorpicker.C:230
 msgid "colorpicker#S:"
 msgstr "S:"
 
 msgid "colorpicker#S:"
 msgstr "S:"
 
-#: cinelerra/colorpicker.C:181
+#: cinelerra/colorpicker.C:231
 msgid "colorpicker_value#V:"
 msgstr "V:"
 
 msgid "colorpicker_value#V:"
 msgstr "V:"
 
-#: cinelerra/colorpicker.C:182
+#: cinelerra/colorpicker.C:232
 msgid "colorpicker#R:"
 msgstr "R:"
 
 msgid "colorpicker#R:"
 msgstr "R:"
 
-#: cinelerra/colorpicker.C:183
+#: cinelerra/colorpicker.C:233
 msgid "colorpicker#G:"
 msgstr "G:"
 
 msgid "colorpicker#G:"
 msgstr "G:"
 
-#: cinelerra/colorpicker.C:184
+#: cinelerra/colorpicker.C:234
 msgid "colorpicker#B:"
 msgstr "B:"
 
 msgid "colorpicker#B:"
 msgstr "B:"
 
-#: cinelerra/colorpicker.C:185
+#: cinelerra/colorpicker.C:235
 msgid "colorpicker#Y:"
 msgstr "Y:"
 
 msgid "colorpicker#Y:"
 msgstr "Y:"
 
-#: cinelerra/colorpicker.C:186
+#: cinelerra/colorpicker.C:236
 msgid "colorpicker#U:"
 msgstr "U:"
 
 msgid "colorpicker#U:"
 msgstr "U:"
 
-#: cinelerra/colorpicker.C:187
+#: cinelerra/colorpicker.C:237
 msgid "colorpicker_Cr#V:"
 msgstr "V:"
 
 msgid "colorpicker_Cr#V:"
 msgstr "V:"
 
-#: cinelerra/colorpicker.C:189
+#: cinelerra/colorpicker.C:239
 msgid "colorpicker#A:"
 msgstr "A:"
 
 msgid "colorpicker#A:"
 msgstr "A:"
 
-#: cinelerra/colorpicker.C:205
+#: cinelerra/colorpicker.C:255
 msgid "Hue"
 msgstr "Hue"
 
 msgid "Hue"
 msgstr "Hue"
 
-#: cinelerra/colorpicker.C:207
+#: cinelerra/colorpicker.C:257
 msgid "Saturation"
 msgstr "Saturación"
 
 msgid "Saturation"
 msgstr "Saturación"
 
-#: cinelerra/colorpicker.C:211 plugins/colorbalance/colorbalancewindow.C:59
+#: cinelerra/colorpicker.C:261 plugins/colorbalance/colorbalancewindow.C:59
 #: plugins/denoisevideo/denoisevideo.C:277 plugins/downsample/downsample.C:278
 #: plugins/histogram/histogramwindow.C:69
 #: plugins/histogram_bezier/bistogramwindow.C:71
 #: plugins/denoisevideo/denoisevideo.C:277 plugins/downsample/downsample.C:278
 #: plugins/histogram/histogramwindow.C:69
 #: plugins/histogram_bezier/bistogramwindow.C:71
@@ -2242,9 +2303,9 @@ msgstr "Saturación"
 #: plugins/swapchannels/swapchannels.C:449
 #: plugins/swapchannels/swapchannels.C:474 plugins/zoomblur/zoomblur.C:173
 msgid "Red"
 #: plugins/swapchannels/swapchannels.C:449
 #: plugins/swapchannels/swapchannels.C:474 plugins/zoomblur/zoomblur.C:173
 msgid "Red"
-msgstr "Rojo"
+msgstr "R-Rojo"
 
 
-#: cinelerra/colorpicker.C:213 plugins/colorbalance/colorbalancewindow.C:65
+#: cinelerra/colorpicker.C:263 plugins/colorbalance/colorbalancewindow.C:65
 #: plugins/denoisevideo/denoisevideo.C:279 plugins/downsample/downsample.C:284
 #: plugins/histogram/histogramwindow.C:75
 #: plugins/histogram_bezier/bistogramwindow.C:74
 #: plugins/denoisevideo/denoisevideo.C:279 plugins/downsample/downsample.C:284
 #: plugins/histogram/histogramwindow.C:75
 #: plugins/histogram_bezier/bistogramwindow.C:74
@@ -2252,9 +2313,9 @@ msgstr "Rojo"
 #: plugins/swapchannels/swapchannels.C:452
 #: plugins/swapchannels/swapchannels.C:475 plugins/zoomblur/zoomblur.C:175
 msgid "Green"
 #: plugins/swapchannels/swapchannels.C:452
 #: plugins/swapchannels/swapchannels.C:475 plugins/zoomblur/zoomblur.C:175
 msgid "Green"
-msgstr "Verde"
+msgstr "G-Verde"
 
 
-#: cinelerra/colorpicker.C:215 plugins/colorbalance/colorbalancewindow.C:71
+#: cinelerra/colorpicker.C:265 plugins/colorbalance/colorbalancewindow.C:71
 #: plugins/denoisevideo/denoisevideo.C:281 plugins/downsample/downsample.C:290
 #: plugins/histogram/histogramwindow.C:81
 #: plugins/histogram_bezier/bistogramwindow.C:77
 #: plugins/denoisevideo/denoisevideo.C:281 plugins/downsample/downsample.C:290
 #: plugins/histogram/histogramwindow.C:81
 #: plugins/histogram_bezier/bistogramwindow.C:77
@@ -2263,37 +2324,37 @@ msgstr "Verde"
 #: plugins/swapchannels/swapchannels.C:476 plugins/theme_blue/bluetheme.C:63
 #: plugins/zoomblur/zoomblur.C:177
 msgid "Blue"
 #: plugins/swapchannels/swapchannels.C:476 plugins/theme_blue/bluetheme.C:63
 #: plugins/zoomblur/zoomblur.C:177
 msgid "Blue"
-msgstr "Azul"
+msgstr "B-Azul"
 
 
-#: cinelerra/colorpicker.C:217
+#: cinelerra/colorpicker.C:267
 msgid "Luminance"
 msgstr "Luminancia"
 
 msgid "Luminance"
 msgstr "Luminancia"
 
-#: cinelerra/colorpicker.C:219
+#: cinelerra/colorpicker.C:269
 msgid "Blue Luminance Difference"
 msgstr "Diferencia de luminancia Azul"
 
 msgid "Blue Luminance Difference"
 msgstr "Diferencia de luminancia Azul"
 
-#: cinelerra/colorpicker.C:221
+#: cinelerra/colorpicker.C:271
 msgid "Red Luminance Difference"
 msgid "Red Luminance Difference"
-msgstr "Diferencia de luminancia Rojo"
+msgstr "Diferencia de luminancia Roja"
 
 
-#: cinelerra/colorpicker.C:224 plugins/crikey/crikeywindow.C:96
-#: plugins/denoisevideo/denoisevideo.C:283 plugins/downsample/downsample.C:296
-#: plugins/linearblur/linearblur.C:184 plugins/radialblur/radialblur.C:181
-#: plugins/swapchannels/swapchannels.C:458
+#: cinelerra/colorpicker.C:274 plugins/alpha/alpha.C:117
+#: plugins/crikey/crikeywindow.C:96 plugins/denoisevideo/denoisevideo.C:283
+#: plugins/downsample/downsample.C:296 plugins/linearblur/linearblur.C:184
+#: plugins/radialblur/radialblur.C:181 plugins/swapchannels/swapchannels.C:458
 #: plugins/swapchannels/swapchannels.C:477 plugins/zoomblur/zoomblur.C:179
 msgid "Alpha"
 #: plugins/swapchannels/swapchannels.C:477 plugins/zoomblur/zoomblur.C:179
 msgid "Alpha"
-msgstr "Alpha"
+msgstr "Alfa"
 
 
-#: cinelerra/colorpicker.C:1030
+#: cinelerra/colorpicker.C:1125
 msgid "hex rgb color"
 msgstr "color RGB hexadecimal"
 
 msgid "hex rgb color"
 msgstr "color RGB hexadecimal"
 
-#: cinelerra/colorpicker.C:1078
+#: cinelerra/colorpicker.C:1173
 msgid "grab from anywhere picker"
 msgstr "selector agarrar desde cualquier lugar"
 
 msgid "grab from anywhere picker"
 msgstr "selector agarrar desde cualquier lugar"
 
-#: cinelerra/colorpicker.C:1100
+#: cinelerra/colorpicker.C:1195
 msgid "color history"
 msgstr "historico de color"
 
 msgid "color history"
 msgstr "historico de color"
 
@@ -2341,6 +2402,23 @@ msgstr "Mi"
 msgid "cut %f/%f = %d\n"
 msgstr "cortar %f/%f = %d\n"
 
 msgid "cut %f/%f = %d\n"
 msgstr "cortar %f/%f = %d\n"
 
+#: cinelerra/compressortools.C:523 cinelerra/compressortools.C:524
+#: cinelerra/compressortools.C:525
+msgid "Input"
+msgstr "Entrar"
+
+#: cinelerra/compressortools.C:996
+msgid "Copy graph"
+msgstr "Copiar gráfico"
+
+#: cinelerra/compressortools.C:1019
+msgid "Paste graph"
+msgstr "Pegar gráfico"
+
+#: cinelerra/compressortools.C:1062
+msgid "Clear graph"
+msgstr "Eliminar gráfico"
+
 #: cinelerra/compresspopup.C:38
 msgid "DV"
 msgstr "DV"
 #: cinelerra/compresspopup.C:38
 msgid "DV"
 msgstr "DV"
@@ -2349,7 +2427,7 @@ msgstr "DV"
 msgid "MJPA"
 msgstr "MJPA"
 
 msgid "MJPA"
 msgstr "MJPA"
 
-#: cinelerra/compresspopup.C:41 cinelerra/file.inc:115
+#: cinelerra/compresspopup.C:41 cinelerra/file.inc:116
 msgid "PNG"
 msgstr "PNG"
 
 msgid "PNG"
 msgstr "PNG"
 
@@ -2408,47 +2486,127 @@ msgstr ": Archivo existe"
 msgid "The following files exist.  Overwrite them?"
 msgstr "Existen los siguientes archivos. ¿Sobreescribirlos?"
 
 msgid "The following files exist.  Overwrite them?"
 msgstr "Existen los siguientes archivos. ¿Sobreescribirlos?"
 
-#: cinelerra/cpanel.C:152
+#: cinelerra/convert.C:208
+msgid "Transcode clip"
+msgstr "Transcodificar clip"
+
+#: cinelerra/convert.C:290
+#, c-format
+msgid ""
+"transcode target file exists but is incorrect format:\n"
+"%s\n"
+"remove file from disk before transcode to new format.\n"
+msgstr ""
+"el archivo de destino de transcodificación existe pero tiene un formato incorrecto:\n"
+"%s\n"
+"eliminar el archivo del disco antes de transcodificar a un nuevo formato.\n"
+
+#: cinelerra/convert.C:377
+#, c-format
+msgid "convert: failed=%d canceled=%d\n"
+msgstr "convertir: fallido=%d cancelado)%d\n"
+
+#: cinelerra/convert.C:382
+#, c-format
+msgid "TranscodeRender::run: done in %s\n"
+msgstr "TranscodificarRender::ejecuta: hecho en %s\n"
+
+#: cinelerra/convert.C:384
+msgid "transcode cancelled"
+msgstr "transcodificación cancelada"
+
+#: cinelerra/convert.C:386
+msgid "transcode failed"
+msgstr "falló la transcodificación"
+
+#: cinelerra/convert.C:388
+#, c-format
+msgid "transcode %d files, render time %s"
+msgstr "transcodificación %d archivos, tiempo de render %s"
+
+#: cinelerra/convert.C:397
+msgid "Error making transcode."
+msgstr "Error al hacer la transcodificación."
+
+#: cinelerra/convert.C:425
+msgid "Transcode files..."
+msgstr "Transcodificando archivos..."
+
+#: cinelerra/convert.C:535
+msgid ": Transcode settings"
+msgstr ": Configuración de transcodificación"
+
+#: cinelerra/convert.C:562
+msgid "Render untagged assets and replace in project"
+msgstr "Renderizar activos sin etiquetar y reemplazar en el proyecto"
+
+#: cinelerra/convert.C:565 cinelerra/convert.C:573
+msgid "Tag suffix:"
+msgstr "Sufijo de etiqueta:"
+
+#: cinelerra/convert.C:587 cinelerra/proxy.C:457 cinelerra/render.C:1062
+msgid "Beep on done volume"
+msgstr ""
+"Volumen del pitido\n"
+"al terminar"
+
+#: cinelerra/convert.C:628
+msgid "Transcode..."
+msgstr "Transcodificar..."
+
+#: cinelerra/convert.C:628
+msgid "Alt-e"
+msgstr "Alt-e"
+
+#: cinelerra/convert.C:711
+msgid "Remove originals from project"
+msgstr "Eliminar originales del proyecto"
+
+#: cinelerra/convert.C:727
+msgid "Into Nested Proxy directory"
+msgstr "Dentro de la carpeta del Proxy Anidado"
+
+#: cinelerra/cpanel.C:153
 msgid "Protect video from changes (F1)"
 msgstr "Proteger vídeo de cambios (F1)"
 
 msgid "Protect video from changes (F1)"
 msgstr "Proteger vídeo de cambios (F1)"
 
-#: cinelerra/cpanel.C:176
+#: cinelerra/cpanel.C:177
 msgid "Edit mask (F3)"
 msgstr "Editar máscara (F3)"
 
 msgid "Edit mask (F3)"
 msgstr "Editar máscara (F3)"
 
-#: cinelerra/cpanel.C:198
+#: cinelerra/cpanel.C:199
 msgid "Ruler (F4)"
 msgstr "Regla (F4)"
 
 msgid "Ruler (F4)"
 msgstr "Regla (F4)"
 
-#: cinelerra/cpanel.C:220
+#: cinelerra/cpanel.C:221
 msgid "Zoom view (F2)"
 msgstr "Vista Zoom (F2)"
 
 msgid "Zoom view (F2)"
 msgstr "Vista Zoom (F2)"
 
-#: cinelerra/cpanel.C:240
+#: cinelerra/cpanel.C:241
 msgid "Adjust camera automation (F5)"
 msgstr "Ajustar automatización de cámara (F5)"
 
 msgid "Adjust camera automation (F5)"
 msgstr "Ajustar automatización de cámara (F5)"
 
-#: cinelerra/cpanel.C:260
+#: cinelerra/cpanel.C:261
 msgid "Adjust projector automation (F6)"
 msgstr "Ajustar automatización proyector (F6)"
 
 msgid "Adjust projector automation (F6)"
 msgstr "Ajustar automatización proyector (F6)"
 
-#: cinelerra/cpanel.C:280
+#: cinelerra/cpanel.C:281
 msgid "Crop a layer or output (F7)"
 msgstr "Recortar una capa o la salida (F7)"
 
 msgid "Crop a layer or output (F7)"
 msgstr "Recortar una capa o la salida (F7)"
 
-#: cinelerra/cpanel.C:304
+#: cinelerra/cpanel.C:305
 msgid "Get color (F8)"
 msgstr "Obtener color (F8)"
 
 msgid "Get color (F8)"
 msgstr "Obtener color (F8)"
 
-#: cinelerra/cpanel.C:328
+#: cinelerra/cpanel.C:329
 msgid "Show tool info (F9)"
 msgstr "Mostrar información de herramientas (F9)"
 
 msgid "Show tool info (F9)"
 msgstr "Mostrar información de herramientas (F9)"
 
-#: cinelerra/cpanel.C:359
+#: cinelerra/cpanel.C:360
 msgid "Show safe regions (F10)"
 msgstr "Mostrar zonas seguras (F10)"
 
 msgid "Show safe regions (F10)"
 msgstr "Mostrar zonas seguras (F10)"
 
-#: cinelerra/cpanel.C:376 plugins/perspective/perspective.C:203
+#: cinelerra/cpanel.C:377 plugins/perspective/perspective.C:203
 #: plugins/zoom/zoom.C:147
 msgid "Zoom"
 msgstr "Enfocar"
 #: plugins/zoom/zoom.C:147
 msgid "Zoom"
 msgstr "Enfocar"
@@ -2465,44 +2623,44 @@ msgstr ": Recortar"
 msgid "Select a region to crop in the video output window"
 msgstr "Seleccionar una región para recortar en la ventana de salida de vídeo"
 
 msgid "Select a region to crop in the video output window"
 msgstr "Seleccionar una región para recortar en la ventana de salida de vídeo"
 
-#: cinelerra/cwindowgui.C:79
+#: cinelerra/cwindowgui.C:80
 msgid ": Compositor"
 msgstr ": Compositor"
 
 msgid ": Compositor"
 msgstr ": Compositor"
 
-#: cinelerra/cwindowgui.C:668 cinelerra/cwindowgui.C:701
+#: cinelerra/cwindowgui.C:666 cinelerra/cwindowgui.C:699
 msgid "insert assets"
 msgstr "insertar clips"
 
 msgid "insert assets"
 msgstr "insertar clips"
 
-#: cinelerra/cwindowgui.C:821 cinelerra/mbuttons.C:243
+#: cinelerra/cwindowgui.C:819 cinelerra/mbuttons.C:243
 msgid "main window: "
 msgstr "ventana principal: "
 
 msgid "main window: "
 msgstr "ventana principal: "
 
-#: cinelerra/cwindowgui.C:1770 cinelerra/cwindowgui.C:3334
+#: cinelerra/cwindowgui.C:1781 cinelerra/cwindowgui.C:3322
 msgid "mask rotate"
 msgstr "rotación de máscara"
 
 msgid "mask rotate"
 msgstr "rotación de máscara"
 
-#: cinelerra/cwindowgui.C:1774 cinelerra/cwindowgui.C:3338
+#: cinelerra/cwindowgui.C:1785 cinelerra/cwindowgui.C:3326
 msgid "mask scale"
 msgstr "escalar máscara"
 
 msgid "mask scale"
 msgstr "escalar máscara"
 
-#: cinelerra/cwindowgui.C:1782
+#: cinelerra/cwindowgui.C:1793
 msgid "mask translate"
 msgstr "máscara convertir"
 
 msgid "mask translate"
 msgstr "máscara convertir"
 
-#: cinelerra/cwindowgui.C:1789
+#: cinelerra/cwindowgui.C:1800
 msgid "mask adjust"
 msgstr "ajuste de máscara"
 
 msgid "mask adjust"
 msgstr "ajuste de máscara"
 
-#: cinelerra/cwindowgui.C:1802 cinelerra/cwindowtool.C:2943
+#: cinelerra/cwindowgui.C:1813 cinelerra/cwindowtool.C:2943
 #: cinelerra/cwindowtool.C:2970
 msgid "mask point"
 msgstr "punto de máscara"
 
 #: cinelerra/cwindowtool.C:2970
 msgid "mask point"
 msgstr "punto de máscara"
 
-#: cinelerra/cwindowgui.C:2298 cinelerra/cwindowgui.C:2436
+#: cinelerra/cwindowgui.C:2309 cinelerra/cwindowgui.C:2424
 msgid "Eyedrop"
 msgstr "Eyedrop"
 
 msgid "Eyedrop"
 msgstr "Eyedrop"
 
-#: cinelerra/cwindowgui.C:3059 cinelerra/cwindowgui.C:3317
+#: cinelerra/cwindowgui.C:3047 cinelerra/cwindowgui.C:3305
 #: cinelerra/cwindowtool.C:883 cinelerra/cwindowtool.C:931
 #: cinelerra/cwindowtool.C:994 cinelerra/cwindowtool.C:998
 #: cinelerra/cwindowtool.C:1025 cinelerra/cwindowtool.C:1029
 #: cinelerra/cwindowtool.C:883 cinelerra/cwindowtool.C:931
 #: cinelerra/cwindowtool.C:994 cinelerra/cwindowtool.C:998
 #: cinelerra/cwindowtool.C:1025 cinelerra/cwindowtool.C:1029
@@ -2513,7 +2671,7 @@ msgstr "Eyedrop"
 msgid "camera"
 msgstr "cámara"
 
 msgid "camera"
 msgstr "cámara"
 
-#: cinelerra/cwindowgui.C:3061 cinelerra/cwindowgui.C:3321
+#: cinelerra/cwindowgui.C:3049 cinelerra/cwindowgui.C:3309
 #: cinelerra/cwindowtool.C:1294 cinelerra/cwindowtool.C:1340
 #: cinelerra/cwindowtool.C:1392 cinelerra/cwindowtool.C:1397
 #: cinelerra/cwindowtool.C:1421 cinelerra/cwindowtool.C:1425
 #: cinelerra/cwindowtool.C:1294 cinelerra/cwindowtool.C:1340
 #: cinelerra/cwindowtool.C:1392 cinelerra/cwindowtool.C:1397
 #: cinelerra/cwindowtool.C:1421 cinelerra/cwindowtool.C:1425
@@ -2524,11 +2682,11 @@ msgstr "cámara"
 msgid "projector"
 msgstr "proyector"
 
 msgid "projector"
 msgstr "proyector"
 
-#: cinelerra/cwindowgui.C:3330
+#: cinelerra/cwindowgui.C:3318
 msgid "mask"
 msgstr "máscara"
 
 msgid "mask"
 msgstr "máscara"
 
-#: cinelerra/cwindowgui.h:55 cinelerra/scale.C:363 cinelerra/setformat.C:771
+#: cinelerra/cwindowgui.h:55 cinelerra/scale.C:363 cinelerra/setformat.C:766
 msgid "Auto"
 msgstr "Automático"
 
 msgid "Auto"
 msgstr "Automático"
 
@@ -2632,7 +2790,7 @@ msgstr "Justificar abajo"
 
 #: cinelerra/cwindowtool.C:1186
 msgid "Add Keyframe: Shift-F11"
 
 #: cinelerra/cwindowtool.C:1186
 msgid "Add Keyframe: Shift-F11"
-msgstr "Agregar fotograma clave: Shift-F11"
+msgstr "Agregar fotograma clave: Mayús-F11"
 
 #: cinelerra/cwindowtool.C:1200
 msgid "Reset Camera: F11"
 
 #: cinelerra/cwindowtool.C:1200
 msgid "Reset Camera: F11"
@@ -2644,7 +2802,7 @@ msgstr ": Proyector"
 
 #: cinelerra/cwindowtool.C:1558
 msgid "Add Keyframe: Shift-F12"
 
 #: cinelerra/cwindowtool.C:1558
 msgid "Add Keyframe: Shift-F12"
-msgstr "Agregar fotograma clave: Shift-F12"
+msgstr "Agregar fotograma clave: Mayús-F12"
 
 #: cinelerra/cwindowtool.C:1572
 msgid "Reset Projector: F12"
 
 #: cinelerra/cwindowtool.C:1572
 msgid "Reset Projector: F12"
@@ -2664,7 +2822,7 @@ msgstr "habilitar máscara"
 
 #: cinelerra/cwindowtool.C:1881 cinelerra/cwindowtool.C:1899
 msgid "Solo"
 
 #: cinelerra/cwindowtool.C:1881 cinelerra/cwindowtool.C:1899
 msgid "Solo"
-msgstr "en solitario"
+msgstr "Solo"
 
 #: cinelerra/cwindowtool.C:1885
 msgid "Solo video track"
 
 #: cinelerra/cwindowtool.C:1885
 msgid "Solo video track"
@@ -2694,11 +2852,11 @@ msgstr "Foco"
 msgid "Center for rotate/scale"
 msgstr "Centrar para rotar/escalar"
 
 msgid "Center for rotate/scale"
 msgstr "Centrar para rotar/escalar"
 
-#: cinelerra/cwindowtool.C:2119
+#: cinelerra/cwindowtool.C:2119 plugins/sketcher/sketcherwindow.C:1400
 msgid "Help"
 msgstr "Ayuda"
 
 msgid "Help"
 msgstr "Ayuda"
 
-#: cinelerra/cwindowtool.C:2123
+#: cinelerra/cwindowtool.C:2123 plugins/sketcher/sketcherwindow.C:1404
 msgid "Show help text"
 msgstr "Mostrar texto de ayuda"
 
 msgid "Show help text"
 msgstr "Mostrar texto de ayuda"
 
@@ -2794,7 +2952,7 @@ msgstr "Formas predefinidas"
 #: cinelerra/cwindowtool.C:2716 plugins/findobj/findobjwindow.C:865
 #: plugins/findobj/findobjwindow.C:881 plugins/gradient/gradient.C:337
 #: plugins/piano/piano.C:688 plugins/piano/piano.C:941
 #: cinelerra/cwindowtool.C:2716 plugins/findobj/findobjwindow.C:865
 #: plugins/findobj/findobjwindow.C:881 plugins/gradient/gradient.C:337
 #: plugins/piano/piano.C:688 plugins/piano/piano.C:941
-#: plugins/synthesizer/synthesizer.C:974 plugins/synthesizer/synthesizer.C:1399
+#: plugins/synthesizer/synthesizer.C:975 plugins/synthesizer/synthesizer.C:1409
 #: plugins/tremolo/tremolo.C:473
 #, c-format
 msgid "Square"
 #: plugins/tremolo/tremolo.C:473
 #, c-format
 msgid "Square"
@@ -2805,8 +2963,8 @@ msgid "Circle"
 msgstr "Círculo"
 
 #: cinelerra/cwindowtool.C:2720 plugins/piano/piano.C:689
 msgstr "Círculo"
 
 #: cinelerra/cwindowtool.C:2720 plugins/piano/piano.C:689
-#: plugins/piano/piano.C:942 plugins/synthesizer/synthesizer.C:975
-#: plugins/synthesizer/synthesizer.C:1400 plugins/tremolo/tremolo.C:474
+#: plugins/piano/piano.C:942 plugins/synthesizer/synthesizer.C:976
+#: plugins/synthesizer/synthesizer.C:1410 plugins/tremolo/tremolo.C:474
 #, c-format
 msgid "Triangle"
 msgstr "Triángulo"
 #, c-format
 msgid "Triangle"
 msgstr "Triángulo"
@@ -2848,7 +3006,7 @@ msgstr "Pluma:"
 msgid "Mask Points"
 msgstr "Puntos de máscara"
 
 msgid "Mask Points"
 msgstr "Puntos de máscara"
 
-#: cinelerra/cwindowtool.C:2765 plugins/compressor/compressor.C:882
+#: cinelerra/cwindowtool.C:2765
 msgid "Point:"
 msgstr "Punto:"
 
 msgid "Point:"
 msgstr "Punto:"
 
@@ -3002,9 +3160,9 @@ msgstr "%0.01f pixeles"
 
 #: cinelerra/dbwindow.C:202
 msgid "Media DB..."
 
 #: cinelerra/dbwindow.C:202
 msgid "Media DB..."
-msgstr "Media DB..."
+msgstr "Media db..."
 
 
-#: cinelerra/dbwindow.C:202 cinelerra/mainmenu.C:1634
+#: cinelerra/dbwindow.C:202 cinelerra/mainmenu.C:1638
 msgid "Shift-M"
 msgstr "Mayús-M"
 
 msgid "Shift-M"
 msgstr "Mayús-M"
 
@@ -3478,7 +3636,7 @@ msgstr "Velocidad ISO: %d\n"
 #: cinelerra/dcraw.C:10370
 #, c-format
 msgid "Shutter: "
 #: cinelerra/dcraw.C:10370
 #, c-format
 msgid "Shutter: "
-msgstr "Obturardor:"
+msgstr "Obturardor: "
 
 #: cinelerra/dcraw.C:10373
 #, c-format
 
 #: cinelerra/dcraw.C:10373
 #, c-format
@@ -3656,8 +3814,8 @@ msgstr "** %scarrier, dvb_locked %s\n"
 msgid "no "
 msgstr "no "
 
 msgid "no "
 msgstr "no "
 
-#: cinelerra/devicedvbinput.C:494 cinelerra/mwindow.C:658
-#: cinelerra/mwindow.C:706
+#: cinelerra/devicedvbinput.C:494 cinelerra/mwindow.C:670
+#: cinelerra/mwindow.C:718
 msgid "lock"
 msgstr "bloquear"
 
 msgid "lock"
 msgstr "bloquear"
 
@@ -3766,7 +3924,7 @@ msgstr "Punto de salida ( ] or > )"
 
 #: cinelerra/editpanel.C:731
 msgid "Splice ( v )"
 
 #: cinelerra/editpanel.C:731
 msgid "Splice ( v )"
-msgstr "Separar (v)"
+msgstr "Juntar (v)"
 
 #: cinelerra/editpanel.C:758
 msgid "To clip ( i )"
 
 #: cinelerra/editpanel.C:758
 msgid "To clip ( i )"
@@ -3828,71 +3986,76 @@ msgstr "Deshacer (z)"
 msgid "Redo ( shift Z )"
 msgstr "Rehacer ( Mayús Z )"
 
 msgid "Redo ( shift Z )"
 msgstr "Rehacer ( Mayús Z )"
 
-#: cinelerra/editpopup.C:90 cinelerra/mainmenu.C:1004
+#: cinelerra/editpopup.C:136
+#, c-format
+msgid "Edit is not EDL: %s"
+msgstr "Editar no es EDL: %s"
+
+#: cinelerra/editpopup.C:144 cinelerra/mainmenu.C:1008
 msgid "Clear Select"
 msgid "Clear Select"
-msgstr "Limpiar Seleccionar"
+msgstr "Desselecionar todos los clips"
 
 
-#: cinelerra/editpopup.C:90
+#: cinelerra/editpopup.C:144
 msgid "Ctrl-Shift-A"
 msgstr "Ctrl-Mayús-A"
 
 msgid "Ctrl-Shift-A"
 msgstr "Ctrl-Mayús-A"
 
-#: cinelerra/editpopup.C:105
+#: cinelerra/editpopup.C:159
 msgid "Ctrl-c"
 msgstr "Ctrl-c"
 
 msgid "Ctrl-c"
 msgstr "Ctrl-c"
 
-#: cinelerra/editpopup.C:119
+#: cinelerra/editpopup.C:173
 msgid "Copy pack"
 msgid "Copy pack"
-msgstr "Paquete de copias"
+msgstr "Copiar para juntar al pegar"
 
 
-#: cinelerra/editpopup.C:119
+#: cinelerra/editpopup.C:173
 msgid "Ctrl-Shift-C"
 msgstr "Ctrl-Mayús-C"
 
 msgid "Ctrl-Shift-C"
 msgstr "Ctrl-Mayús-C"
 
-#: cinelerra/editpopup.C:134
+#: cinelerra/editpopup.C:188
 msgid "Ctrl-x"
 msgstr "Ctrl-x"
 
 msgid "Ctrl-x"
 msgstr "Ctrl-x"
 
-#: cinelerra/editpopup.C:148
+#: cinelerra/editpopup.C:202
 msgid "Cut pack"
 msgid "Cut pack"
-msgstr "Paquete de cortar"
+msgstr "Cortar para juntar al pegar"
 
 
-#: cinelerra/editpopup.C:148
+#: cinelerra/editpopup.C:202
 msgid "Ctrl-z"
 msgstr "Ctrl-z"
 
 msgid "Ctrl-z"
 msgstr "Ctrl-z"
 
-#: cinelerra/editpopup.C:162
+#: cinelerra/editpopup.C:216
 msgid "Ctrl-m"
 msgstr "Ctrl-m"
 
 msgid "Ctrl-m"
 msgstr "Ctrl-m"
 
-#: cinelerra/editpopup.C:176
+#: cinelerra/editpopup.C:230
 msgid "Mute pack"
 msgid "Mute pack"
-msgstr "Paquete de silencio"
+msgstr "Cortar dejando el hueco para juntar al pegar"
 
 
-#: cinelerra/editpopup.C:176
+#: cinelerra/editpopup.C:230
 msgid "Ctrl-Shift-M"
 msgstr "Ctrl-Mayús-M"
 
 msgid "Ctrl-Shift-M"
 msgstr "Ctrl-Mayús-M"
 
-#: cinelerra/editpopup.C:191
+#: cinelerra/editpopup.C:245
 msgid "Ctrl-v"
 msgstr "Ctrl-v"
 
 msgid "Ctrl-v"
 msgstr "Ctrl-v"
 
-#: cinelerra/editpopup.C:211
+#: cinelerra/editpopup.C:265
 msgid "Overwrite"
 msgstr "Sobrescribir"
 
 msgid "Overwrite"
 msgstr "Sobrescribir"
 
-#: cinelerra/editpopup.C:211
+#: cinelerra/editpopup.C:265
 msgid "Ctrl-b"
 msgstr "Ctrl-b"
 
 msgid "Ctrl-b"
 msgstr "Ctrl-b"
 
-#: cinelerra/editpopup.C:231
+#: cinelerra/editpopup.C:285
 msgid "Overwrite Plugins"
 msgid "Overwrite Plugins"
-msgstr "Sobreescribir complementos"
+msgstr "Sobreescribir solo los efectos"
 
 
-#: cinelerra/editpopup.C:231
+#: cinelerra/editpopup.C:285
 msgid "Ctrl-Shift-P"
 msgstr "Ctrl-Mayús-P"
 
 msgid "Ctrl-Shift-P"
 msgstr "Ctrl-Mayús-P"
 
-#: cinelerra/edl.C:1837
+#: cinelerra/edl.C:1891
 msgid "new_edl edit"
 msgstr "edición new_edl"
 
 msgid "new_edl edit"
 msgstr "edición new_edl"
 
@@ -3922,7 +4085,7 @@ msgstr "Exportación de EDL"
 
 #: cinelerra/exportedl.C:364
 msgid "Select a file to export to:"
 
 #: cinelerra/exportedl.C:364
 msgid "Select a file to export to:"
-msgstr "Seleccione un archivo para exportar a:"
+msgstr "Seleccione un archivo para exportar en:"
 
 #: cinelerra/exportedl.C:378 cinelerra/formattools.C:146
 msgid "Output to file"
 
 #: cinelerra/exportedl.C:378 cinelerra/formattools.C:146
 msgid "Output to file"
@@ -3930,7 +4093,7 @@ msgstr "Salida a archivo"
 
 #: cinelerra/exportedl.C:378 cinelerra/formattools.C:146
 msgid "Select a file to write to:"
 
 #: cinelerra/exportedl.C:378 cinelerra/formattools.C:146
 msgid "Select a file to write to:"
-msgstr "Seleccione un archivo para escribir:"
+msgstr "Lugar y Nombre del archivo que va a crear:"
 
 #: cinelerra/exportedl.C:382
 msgid "Select track to be exported:"
 
 #: cinelerra/exportedl.C:382
 msgid "Select track to be exported:"
@@ -3961,29 +4124,29 @@ msgstr "Pluma por el número de fotogramas:"
 msgid "%s  err: %s\n"
 msgstr "%s  err: %s\n"
 
 msgid "%s  err: %s\n"
 msgstr "%s  err: %s\n"
 
-#: cinelerra/ffmpeg.C:394 cinelerra/ffmpeg.C:3353
+#: cinelerra/ffmpeg.C:417 cinelerra/ffmpeg.C:3376
 msgid "cant allocate codec context\n"
 msgstr "no puede asignar contexto de códec %s:%s\n"
 
 msgid "cant allocate codec context\n"
 msgstr "no puede asignar contexto de códec %s:%s\n"
 
-#: cinelerra/ffmpeg.C:437
+#: cinelerra/ffmpeg.C:460
 msgid "open decoder failed\n"
 msgstr "fallo apertura de decodificador\n"
 
 msgid "open decoder failed\n"
 msgstr "fallo apertura de decodificador\n"
 
-#: cinelerra/ffmpeg.C:440
+#: cinelerra/ffmpeg.C:463
 #, c-format
 msgid "can't open input file: %s\n"
 msgstr "no se puede abrir archivo de entrada: %s\n"
 
 #, c-format
 msgid "can't open input file: %s\n"
 msgstr "no se puede abrir archivo de entrada: %s\n"
 
-#: cinelerra/ffmpeg.C:502
+#: cinelerra/ffmpeg.C:525
 msgid "av_buffersrc_add_frame_flags failed\n"
 msgstr "av_buffersrc_add_frame_flags fallaron\n"
 
 msgid "av_buffersrc_add_frame_flags failed\n"
 msgstr "av_buffersrc_add_frame_flags fallaron\n"
 
-#: cinelerra/ffmpeg.C:1035 cinelerra/ffmpeg.C:1085
-#: cinelerra/performanceprefs.C:339
+#: cinelerra/ffmpeg.C:1058 cinelerra/ffmpeg.C:1108
+#: cinelerra/performanceprefs.C:339 cinelerra/plugin.C:227
 msgid "none"
 msgstr "ninguno"
 
 msgid "none"
 msgstr "ninguno"
 
-#: cinelerra/ffmpeg.C:1389
+#: cinelerra/ffmpeg.C:1412
 #, c-format
 msgid ""
 "Error retrieving data from GPU to CPU\n"
 #, c-format
 msgid ""
 "Error retrieving data from GPU to CPU\n"
@@ -3992,122 +4155,127 @@ msgstr ""
 "Error recuperando datos desde GPU a CPU\n"
 "archivo: %s\n"
 
 "Error recuperando datos desde GPU a CPU\n"
 "archivo: %s\n"
 
-#: cinelerra/ffmpeg.C:1977
+#: cinelerra/ffmpeg.C:2000
 #, c-format
 msgid "options open failed %s\n"
 msgstr "opciones de apertura fallaron %s\n"
 
 #, c-format
 msgid "options open failed %s\n"
 msgstr "opciones de apertura fallaron %s\n"
 
-#: cinelerra/ffmpeg.C:1983
+#: cinelerra/ffmpeg.C:2006
 #, c-format
 msgid "format/codec not found %s\n"
 msgstr "formato / códec no encontrado %s\n"
 
 #, c-format
 msgid "format/codec not found %s\n"
 msgstr "formato / códec no encontrado %s\n"
 
-#: cinelerra/ffmpeg.C:2081
+#: cinelerra/ffmpeg.C:2104
 #, c-format
 msgid "err reading %s: line %d\n"
 msgstr "errar lectura %s: línea %d\n"
 
 #, c-format
 msgid "err reading %s: line %d\n"
 msgstr "errar lectura %s: línea %d\n"
 
-#: cinelerra/ffmpeg.C:2175
+#: cinelerra/ffmpeg.C:2198
 #, c-format
 msgid "vid%d (%d),  id 0x%06x:\n"
 msgstr "vid%d (%d),  id 0x%06x:\n"
 
 #, c-format
 msgid "vid%d (%d),  id 0x%06x:\n"
 msgstr "vid%d (%d),  id 0x%06x:\n"
 
-#: cinelerra/ffmpeg.C:2198
+#: cinelerra/ffmpeg.C:2221
 #, c-format
 msgid "aud%d (%d),  id 0x%06x:\n"
 msgstr "aud%d (%d),  id 0x%06x:\n"
 
 #, c-format
 msgid "aud%d (%d),  id 0x%06x:\n"
 msgstr "aud%d (%d),  id 0x%06x:\n"
 
-#: cinelerra/ffmpeg.C:2295
+#: cinelerra/ffmpeg.C:2318
 #, c-format
 msgid "can't stat file: %s\n"
 msgstr "no se puede identificar el archivo: %s\n"
 
 #, c-format
 msgid "can't stat file: %s\n"
 msgstr "no se puede identificar el archivo: %s\n"
 
-#: cinelerra/ffmpeg.C:2393
+#: cinelerra/ffmpeg.C:2398
+#, c-format
+msgid "FFMPEG::open_decoder: some stream have bad times: %s\n"
+msgstr "FFMPEG::abrir_decodificador: algunos flujos tienen mal el tiempo: %s\n"
+
+#: cinelerra/ffmpeg.C:2416
 #, c-format
 msgid "bad file path: %s\n"
 msgstr "mala ruta del archivo: %s\n"
 
 #, c-format
 msgid "bad file path: %s\n"
 msgstr "mala ruta del archivo: %s\n"
 
-#: cinelerra/ffmpeg.C:2398
+#: cinelerra/ffmpeg.C:2421
 #, c-format
 msgid "bad file format: %s\n"
 msgstr "formato de archivo incorrecto: %s\n"
 
 #, c-format
 msgid "bad file format: %s\n"
 msgstr "formato de archivo incorrecto: %s\n"
 
-#: cinelerra/ffmpeg.C:2402
+#: cinelerra/ffmpeg.C:2425
 #, c-format
 msgid "mismatch audio/video file format: %s\n"
 msgstr "desajuste formato de archivo de audio / vídeo: %s\n"
 
 #, c-format
 msgid "mismatch audio/video file format: %s\n"
 msgstr "desajuste formato de archivo de audio / vídeo: %s\n"
 
-#: cinelerra/ffmpeg.C:2412
+#: cinelerra/ffmpeg.C:2435
 #, c-format
 msgid "failed: %s\n"
 msgstr "fallado: %s\n"
 
 #, c-format
 msgid "failed: %s\n"
 msgstr "fallado: %s\n"
 
-#: cinelerra/ffmpeg.C:2436
+#: cinelerra/ffmpeg.C:2459
 #, c-format
 msgid "get_encoder failed %s:%s\n"
 msgstr "get_encoder falló %s:%s\n"
 
 #, c-format
 msgid "get_encoder failed %s:%s\n"
 msgstr "get_encoder falló %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2455
+#: cinelerra/ffmpeg.C:2478
 #, c-format
 msgid "cant find codec %s:%s\n"
 msgstr "no puedo encontrar códec %s:%s\n"
 
 #, c-format
 msgid "cant find codec %s:%s\n"
 msgstr "no puedo encontrar códec %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2461
+#: cinelerra/ffmpeg.C:2484
 #, c-format
 msgid "unknown codec %s:%s\n"
 msgstr "códec desconocido %s:%s\n"
 
 #, c-format
 msgid "unknown codec %s:%s\n"
 msgstr "códec desconocido %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2468
+#: cinelerra/ffmpeg.C:2491
 #, c-format
 msgid "cant create stream %s:%s\n"
 msgstr "no puedo crear el flujo %s:%s\n"
 
 #, c-format
 msgid "cant create stream %s:%s\n"
 msgstr "no puedo crear el flujo %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2476
+#: cinelerra/ffmpeg.C:2499
 #, c-format
 msgid "duplicate audio %s:%s\n"
 msgstr "duplicado de audio %s:%s\n"
 
 #, c-format
 msgid "duplicate audio %s:%s\n"
 msgstr "duplicado de audio %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2481
+#: cinelerra/ffmpeg.C:2504
 #, c-format
 msgid "bad audio options %s:%s\n"
 msgstr "malas opciones de audio %s:%s\n"
 
 #, c-format
 msgid "bad audio options %s:%s\n"
 msgstr "malas opciones de audio %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2517
+#: cinelerra/ffmpeg.C:2540
 #, c-format
 msgid "check_sample_rate failed %s\n"
 msgstr "check_sample_rate falló %s\n"
 
 #, c-format
 msgid "check_sample_rate failed %s\n"
 msgstr "check_sample_rate falló %s\n"
 
-#: cinelerra/ffmpeg.C:2536
+#: cinelerra/ffmpeg.C:2559
 #, c-format
 msgid "duplicate video %s:%s\n"
 msgstr "video duplicado %s:%s\n"
 
 #, c-format
 msgid "duplicate video %s:%s\n"
 msgstr "video duplicado %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2541
+#: cinelerra/ffmpeg.C:2564
 #, c-format
 msgid "bad video options %s:%s\n"
 msgstr "malas opciones de vídeo %s:%s\n"
 
 #, c-format
 msgid "bad video options %s:%s\n"
 msgstr "malas opciones de vídeo %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2598
+#: cinelerra/ffmpeg.C:2621
 #, c-format
 msgid "check_frame_rate failed %s\n"
 msgstr "check_frame_rate falló %s\n"
 
 #, c-format
 msgid "check_frame_rate failed %s\n"
 msgstr "check_frame_rate falló %s\n"
 
-#: cinelerra/ffmpeg.C:2614
+#: cinelerra/ffmpeg.C:2637
 #, c-format
 msgid "not audio/video, %s:%s\n"
 msgstr "no audio / vídeo, %s:%s\n"
 
 #, c-format
 msgid "not audio/video, %s:%s\n"
 msgstr "no audio / vídeo, %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2652
+#: cinelerra/ffmpeg.C:2675
 #, c-format
 msgid "error: stats file = %s\n"
 msgstr "error: archivo datos = %s\n"
 
 #, c-format
 msgid "error: stats file = %s\n"
 msgstr "error: archivo datos = %s\n"
 
-#: cinelerra/ffmpeg.C:2675
+#: cinelerra/ffmpeg.C:2698
 #, c-format
 msgid "open failed %s:%s\n"
 msgstr "falla al abrir %s:%s\n"
 
 #, c-format
 msgid "open failed %s:%s\n"
 msgstr "falla al abrir %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2685
+#: cinelerra/ffmpeg.C:2708
 #, c-format
 msgid ""
 "bitstream filter failed %s:\n"
 #, c-format
 msgid ""
 "bitstream filter failed %s:\n"
@@ -4116,17 +4284,17 @@ msgstr ""
 "fallo en el filtro de flujo de bits %s:\n"
 "%s\n"
 
 "fallo en el filtro de flujo de bits %s:\n"
 "%s\n"
 
-#: cinelerra/ffmpeg.C:3336
+#: cinelerra/ffmpeg.C:3359
 #, c-format
 msgid "av_frame_alloc failed\n"
 msgstr "av_frame_alloc falla\n"
 
 #, c-format
 msgid "av_frame_alloc failed\n"
 msgstr "av_frame_alloc falla\n"
 
-#: cinelerra/ffmpeg.C:3382
+#: cinelerra/ffmpeg.C:3405
 #, c-format
 msgid "codec open failed\n"
 msgstr "error al abrir el códec\n"
 
 #, c-format
 msgid "codec open failed\n"
 msgstr "error al abrir el códec\n"
 
-#: cinelerra/ffmpeg.C:3412
+#: cinelerra/ffmpeg.C:3435
 msgid "over 100 read_frame errs\n"
 msgstr "más de 100 read_frame yerra\n"
 
 msgid "over 100 read_frame errs\n"
 msgstr "más de 100 read_frame yerra\n"
 
@@ -4176,24 +4344,24 @@ msgstr ": Compresión de audio"
 msgid "Bitrate (kbps):"
 msgstr "Velocidad de bits (kbps):"
 
 msgid "Bitrate (kbps):"
 msgstr "Velocidad de bits (kbps):"
 
-#: cinelerra/file.C:242
+#: cinelerra/file.C:243
 msgid "This format doesn't support audio."
 msgstr "Este formato no soporta audio."
 
 msgid "This format doesn't support audio."
 msgstr "Este formato no soporta audio."
 
-#: cinelerra/file.C:245
+#: cinelerra/file.C:246
 msgid "This format doesn't support video."
 msgstr "Este formato no soporta vídeo."
 
 msgid "This format doesn't support video."
 msgstr "Este formato no soporta vídeo."
 
-#: cinelerra/file.C:1291 cinelerra/file.C:1297 cinelerra/fileformat.C:152
+#: cinelerra/file.C:1297 cinelerra/file.C:1303 cinelerra/fileformat.C:152
 #: cinelerra/filesndfile.C:455
 msgid "Lo Hi"
 msgstr "Lo Hi"
 
 #: cinelerra/filesndfile.C:455
 msgid "Lo Hi"
 msgstr "Lo Hi"
 
-#: cinelerra/file.C:1298 cinelerra/fileformat.C:166 cinelerra/filesndfile.C:440
+#: cinelerra/file.C:1304 cinelerra/fileformat.C:166 cinelerra/filesndfile.C:440
 msgid "Hi Lo"
 msgstr "Hi-Lo"
 
 msgid "Hi Lo"
 msgstr "Hi-Lo"
 
-#: cinelerra/file.C:1519
+#: cinelerra/file.C:1528
 msgid "UNKNOWN"
 msgstr "DESCONOCIDO"
 
 msgid "UNKNOWN"
 msgstr "DESCONOCIDO"
 
@@ -4481,157 +4649,161 @@ msgstr "ningún códec nombrado: %s: %s"
 
 #: cinelerra/fileformat.C:34
 msgid ": File Format"
 
 #: cinelerra/fileformat.C:34
 msgid ": File Format"
-msgstr ": Formato de archivo"
+msgstr ": Formato del archivo"
 
 #: cinelerra/fileformat.C:73
 msgid "Assuming raw PCM:"
 msgstr "Asumiendo PCM crudo:"
 
 
 #: cinelerra/fileformat.C:73
 msgid "Assuming raw PCM:"
 msgstr "Asumiendo PCM crudo:"
 
-#: cinelerra/file.inc:97
+#: cinelerra/file.inc:98
 msgid "AC3"
 msgstr "AC3"
 
 msgid "AC3"
 msgstr "AC3"
 
-#: cinelerra/file.inc:98
+#: cinelerra/file.inc:99
 msgid "Apple/SGI AIFF"
 msgstr "Apple / SGI AIFF"
 
 msgid "Apple/SGI AIFF"
 msgstr "Apple / SGI AIFF"
 
-#: cinelerra/file.inc:99
+#: cinelerra/file.inc:100
 msgid "AVI Arne Type 1"
 msgstr "AVI Arne Tipo 1"
 
 msgid "AVI Arne Type 1"
 msgstr "AVI Arne Tipo 1"
 
-#: cinelerra/file.inc:100
+#: cinelerra/file.inc:101
 msgid "AVI Avifile"
 msgstr "AVI Avifile"
 
 msgid "AVI Avifile"
 msgstr "AVI Avifile"
 
-#: cinelerra/file.inc:101
+#: cinelerra/file.inc:102
 msgid "AVI DV Type 2"
 msgstr "AVI DV tipo 2"
 
 msgid "AVI DV Type 2"
 msgstr "AVI DV tipo 2"
 
-#: cinelerra/file.inc:102
+#: cinelerra/file.inc:103
 msgid "AVI Lavtools"
 msgstr "AVI Lavtools"
 
 msgid "AVI Lavtools"
 msgstr "AVI Lavtools"
 
-#: cinelerra/file.inc:103
+#: cinelerra/file.inc:104
 msgid "EXR"
 msgstr "EXR"
 
 msgid "EXR"
 msgstr "EXR"
 
-#: cinelerra/file.inc:104
+#: cinelerra/file.inc:105
 msgid "EXR Sequence"
 msgstr "Secuencia EXR"
 
 msgid "EXR Sequence"
 msgstr "Secuencia EXR"
 
-#: cinelerra/file.inc:105
+#: cinelerra/file.inc:106
 msgid "FFMPEG"
 msgstr "FFMPEG"
 
 msgid "FFMPEG"
 msgstr "FFMPEG"
 
-#: cinelerra/file.inc:106
+#: cinelerra/file.inc:107
 msgid "FLAC"
 msgstr "FLAC"
 
 msgid "FLAC"
 msgstr "FLAC"
 
-#: cinelerra/file.inc:107
+#: cinelerra/file.inc:108
 msgid "GIF"
 msgstr "GIF"
 
 msgid "GIF"
 msgstr "GIF"
 
-#: cinelerra/file.inc:108
+#: cinelerra/file.inc:109
 msgid "GIF Sequence"
 msgstr "Secuencia GIF"
 
 msgid "GIF Sequence"
 msgstr "Secuencia GIF"
 
-#: cinelerra/file.inc:110
+#: cinelerra/file.inc:111
 msgid "JPEG Sequence"
 msgid "JPEG Sequence"
-msgstr "JPEG Secuencia"
+msgstr "Secuencia de JPG"
 
 
-#: cinelerra/file.inc:111
+#: cinelerra/file.inc:112
 msgid "Microsoft WAV"
 msgstr "Microsoft WAV"
 
 msgid "Microsoft WAV"
 msgstr "Microsoft WAV"
 
-#: cinelerra/file.inc:112
+#: cinelerra/file.inc:113
 msgid "MPEG Audio"
 msgstr "MPEG Audio"
 
 msgid "MPEG Audio"
 msgstr "MPEG Audio"
 
-#: cinelerra/file.inc:114
+#: cinelerra/file.inc:115
 msgid "MPEG Video"
 msgstr "Vídeo MPEG"
 
 msgid "MPEG Video"
 msgstr "Vídeo MPEG"
 
-#: cinelerra/file.inc:116
+#: cinelerra/file.inc:117
 msgid "PNG Sequence"
 msgid "PNG Sequence"
-msgstr "PNG Secuencia"
+msgstr "Secuencia de PNG"
 
 
-#: cinelerra/file.inc:117
+#: cinelerra/file.inc:118
 msgid "PPM"
 msgstr "PPM"
 
 msgid "PPM"
 msgstr "PPM"
 
-#: cinelerra/file.inc:118
+#: cinelerra/file.inc:119
 msgid "PPM Sequence"
 msgid "PPM Sequence"
-msgstr "Secuencia PPM"
+msgstr "Secuencia de PPM"
 
 
-#: cinelerra/file.inc:119
+#: cinelerra/file.inc:120
 msgid "Raw DV"
 msgstr "Raw DV"
 
 msgid "Raw DV"
 msgstr "Raw DV"
 
-#: cinelerra/file.inc:120
+#: cinelerra/file.inc:121
 msgid "Raw PCM"
 msgstr "Raw PCM"
 
 msgid "Raw PCM"
 msgstr "Raw PCM"
 
-#: cinelerra/file.inc:121
+#: cinelerra/file.inc:122
 msgid "Sun/NeXT AU"
 msgstr "Sun/NeXT AU"
 
 msgid "Sun/NeXT AU"
 msgstr "Sun/NeXT AU"
 
-#: cinelerra/file.inc:122
+#: cinelerra/file.inc:123
 msgid "TGA"
 msgstr "TGA"
 
 msgid "TGA"
 msgstr "TGA"
 
-#: cinelerra/file.inc:123
+#: cinelerra/file.inc:124
 msgid "TGA Sequence"
 msgid "TGA Sequence"
-msgstr "TGA Secuencia"
+msgstr "Secuencia de TGA"
 
 
-#: cinelerra/file.inc:124
+#: cinelerra/file.inc:125
 msgid "TIFF"
 msgstr "TIFF"
 
 msgid "TIFF"
 msgstr "TIFF"
 
-#: cinelerra/file.inc:125
+#: cinelerra/file.inc:126
 msgid "TIFF Sequence"
 msgid "TIFF Sequence"
-msgstr "Secuencia TIFF"
+msgstr "Secuencia de TIFF"
 
 
-#: cinelerra/file.inc:126
+#: cinelerra/file.inc:127
 msgid "Unknown sound"
 msgstr "Sonido desconocido"
 
 msgid "Unknown sound"
 msgstr "Sonido desconocido"
 
-#: cinelerra/file.inc:173
+#: cinelerra/file.inc:128
+msgid "Reference to EDL"
+msgstr "Referencia a EDL"
+
+#: cinelerra/file.inc:176
 msgid "8 Bit Linear"
 msgstr "8 Bit Linear"
 
 msgid "8 Bit Linear"
 msgstr "8 Bit Linear"
 
-#: cinelerra/file.inc:174
+#: cinelerra/file.inc:177
 msgid "16 Bit Linear"
 msgstr "16 Bit Linear"
 
 msgid "16 Bit Linear"
 msgstr "16 Bit Linear"
 
-#: cinelerra/file.inc:175
+#: cinelerra/file.inc:178
 msgid "24 Bit Linear"
 msgstr "24 Bit Linear"
 
 msgid "24 Bit Linear"
 msgstr "24 Bit Linear"
 
-#: cinelerra/file.inc:176
+#: cinelerra/file.inc:179
 msgid "32 Bit Linear"
 msgstr "32 Bit Linear"
 
 msgid "32 Bit Linear"
 msgstr "32 Bit Linear"
 
-#: cinelerra/file.inc:177
+#: cinelerra/file.inc:180
 msgid "u Law"
 msgstr "u Ley"
 
 msgid "u Law"
 msgstr "u Ley"
 
-#: cinelerra/file.inc:178
+#: cinelerra/file.inc:181
 msgid "IMA 4"
 msgstr "IMA 4"
 
 msgid "IMA 4"
 msgstr "IMA 4"
 
-#: cinelerra/file.inc:179
+#: cinelerra/file.inc:182
 msgid "ADPCM"
 msgstr "ADPCM"
 
 msgid "ADPCM"
 msgstr "ADPCM"
 
-#: cinelerra/file.inc:180
+#: cinelerra/file.inc:183
 msgid "Float"
 msgstr "Flotante"
 
 msgid "Float"
 msgstr "Flotante"
 
-#: cinelerra/file.inc:182
+#: cinelerra/file.inc:185
 msgid "RGB ALPHA"
 msgstr "RGB ALPHA"
 
 msgid "RGB ALPHA"
 msgstr "RGB ALPHA"
 
-#: cinelerra/file.inc:183
+#: cinelerra/file.inc:186
 msgid "PNG ALPHA"
 msgstr "PNG ALPHA"
 
 msgid "PNG ALPHA"
 msgstr "PNG ALPHA"
 
@@ -4729,7 +4901,7 @@ msgstr " (%5.2f), marcos %jd"
 #: cinelerra/filempeg.C:196 cinelerra/filempeg.C:215
 #, c-format
 msgid " (%0.3f secs)"
 #: cinelerra/filempeg.C:196 cinelerra/filempeg.C:215
 #, c-format
 msgid " (%0.3f secs)"
-msgstr " (%0.3f segundos)"
+msgstr " (%0.3f seg)"
 
 #: cinelerra/filempeg.C:201
 #, c-format
 
 #: cinelerra/filempeg.C:201
 #, c-format
@@ -4964,7 +5136,7 @@ msgstr "MPEG-1 Generico"
 
 #: cinelerra/filempeg.C:2097
 msgid "standard VCD"
 
 #: cinelerra/filempeg.C:2097
 msgid "standard VCD"
-msgstr "VCD estándar"
+msgstr "estándar VCD"
 
 #: cinelerra/filempeg.C:2098
 msgid "user VCD"
 
 #: cinelerra/filempeg.C:2098
 msgid "user VCD"
@@ -5034,6 +5206,10 @@ msgstr "YUV 4: 2: 2"
 msgid "PPM, RGB raw only"
 msgstr "PPM, RGB solo crudo"
 
 msgid "PPM, RGB raw only"
 msgstr "PPM, RGB solo crudo"
 
+#: cinelerra/fileref.C:68
+msgid "Reference files cant be created by rendering\n"
+msgstr "Los archivos de referencia no se pueden crear renderizando\n"
+
 #: cinelerra/filesndfile.C:269
 #, c-format
 msgid "sf_seek() to sample %jd failed, reason: %s\n"
 #: cinelerra/filesndfile.C:269
 #, c-format
 msgid "sf_seek() to sample %jd failed, reason: %s\n"
@@ -5111,7 +5287,7 @@ msgstr "Carpeta..."
 
 #: cinelerra/folderlistmenu.C:51
 msgid "New Media"
 
 #: cinelerra/folderlistmenu.C:51
 msgid "New Media"
-msgstr "Nuevo Medios"
+msgstr "Nuevos Medios Multimedia"
 
 #: cinelerra/folderlistmenu.C:52
 msgid "New Clips"
 
 #: cinelerra/folderlistmenu.C:52
 msgid "New Clips"
@@ -5159,39 +5335,39 @@ msgstr "Preestablecidos:"
 
 #: cinelerra/formattools.C:159 cinelerra/recordprefs.C:71
 msgid "File Format:"
 
 #: cinelerra/formattools.C:159 cinelerra/recordprefs.C:71
 msgid "File Format:"
-msgstr "Formato de archivo:"
+msgstr "Formato del archivo:"
 
 
-#: cinelerra/formattools.C:563
+#: cinelerra/formattools.C:568
 msgid "Configure audio compression"
 msgstr "Configurar de compresión de audio"
 
 msgid "Configure audio compression"
 msgstr "Configurar de compresión de audio"
 
-#: cinelerra/formattools.C:585
+#: cinelerra/formattools.C:590
 msgid "Configure video compression"
 msgstr "Configurar la compresión de vídeo"
 
 msgid "Configure video compression"
 msgstr "Configurar la compresión de vídeo"
 
-#: cinelerra/formattools.C:689
+#: cinelerra/formattools.C:694
 msgid "Record audio tracks"
 msgstr "Grabar las pistas de audio"
 
 msgid "Record audio tracks"
 msgstr "Grabar las pistas de audio"
 
-#: cinelerra/formattools.C:689
+#: cinelerra/formattools.C:694
 msgid "Render audio tracks"
 msgstr "Renderizar pistas de audio"
 
 msgid "Render audio tracks"
 msgstr "Renderizar pistas de audio"
 
-#: cinelerra/formattools.C:707
+#: cinelerra/formattools.C:712
 msgid "Record video tracks"
 msgstr "Grabar las pistas de vídeo"
 
 msgid "Record video tracks"
 msgstr "Grabar las pistas de vídeo"
 
-#: cinelerra/formattools.C:707
+#: cinelerra/formattools.C:712
 msgid "Render video tracks"
 msgstr "Renderizar pistas de vídeo"
 
 msgid "Render video tracks"
 msgstr "Renderizar pistas de vídeo"
 
-#: cinelerra/formattools.C:790
+#: cinelerra/formattools.C:795
 msgid "Create new file at each label"
 msgstr "Crear un fichero nuevo en cada etiqueta"
 
 #: cinelerra/formatwindow.C:29 cinelerra/formatwindow.C:90
 msgid ": File format"
 msgid "Create new file at each label"
 msgstr "Crear un fichero nuevo en cada etiqueta"
 
 #: cinelerra/formatwindow.C:29 cinelerra/formatwindow.C:90
 msgid ": File format"
-msgstr ": Formato de archivo"
+msgstr ": Formato del archivo"
 
 #: cinelerra/formatwindow.C:46
 msgid "Set parameters for this audio format:"
 
 #: cinelerra/formatwindow.C:46
 msgid "Set parameters for this audio format:"
@@ -5231,52 +5407,52 @@ msgstr "Transición"
 
 #: cinelerra/gwindowgui.C:65 cinelerra/viewmenu.C:129
 msgid "Plugin Keyframes"
 
 #: cinelerra/gwindowgui.C:65 cinelerra/viewmenu.C:129
 msgid "Plugin Keyframes"
-msgstr "complemento Fotogramas clave"
+msgstr "Fotogramas Clave Efectos"
 
 #: cinelerra/gwindowgui.C:66 cinelerra/gwindowgui.C:164
 msgid "Hard Edges"
 msgstr "Bordes duros"
 
 
 #: cinelerra/gwindowgui.C:66 cinelerra/gwindowgui.C:164
 msgid "Hard Edges"
 msgstr "Bordes duros"
 
-#: cinelerra/gwindowgui.C:72 cinelerra/mainmenu.C:254
+#: cinelerra/gwindowgui.C:72 cinelerra/mainmenu.C:258
 msgid "Camera X"
 msgstr "Cámara X"
 
 msgid "Camera X"
 msgstr "Cámara X"
 
-#: cinelerra/gwindowgui.C:73 cinelerra/mainmenu.C:256
+#: cinelerra/gwindowgui.C:73 cinelerra/mainmenu.C:260
 msgid "Camera Y"
 msgstr "Cámara Y"
 
 msgid "Camera Y"
 msgstr "Cámara Y"
 
-#: cinelerra/gwindowgui.C:74 cinelerra/mainmenu.C:258
+#: cinelerra/gwindowgui.C:74 cinelerra/mainmenu.C:262
 msgid "Camera Z"
 msgstr "Cámara Z"
 
 msgid "Camera Z"
 msgstr "Cámara Z"
 
-#: cinelerra/gwindowgui.C:75 cinelerra/mainmenu.C:260
+#: cinelerra/gwindowgui.C:75 cinelerra/mainmenu.C:264
 msgid "Projector X"
 msgstr "Proyector X"
 
 msgid "Projector X"
 msgstr "Proyector X"
 
-#: cinelerra/gwindowgui.C:76 cinelerra/mainmenu.C:262
+#: cinelerra/gwindowgui.C:76 cinelerra/mainmenu.C:266
 msgid "Projector Y"
 msgstr "Proyector Y"
 
 msgid "Projector Y"
 msgstr "Proyector Y"
 
-#: cinelerra/gwindowgui.C:77 cinelerra/mainmenu.C:264
+#: cinelerra/gwindowgui.C:77 cinelerra/mainmenu.C:268
 msgid "Projector Z"
 msgstr "Proyector Z"
 
 msgid "Projector Z"
 msgstr "Proyector Z"
 
-#: cinelerra/gwindowgui.C:78 cinelerra/mainmenu.C:246
+#: cinelerra/gwindowgui.C:78 cinelerra/mainmenu.C:250
 msgid "Fade"
 msgid "Fade"
-msgstr "Difuminado"
+msgstr "Fundido / Volumen"
 
 #: cinelerra/gwindowgui.C:80 cinelerra/recordbatches.C:23
 #: plugins/parametric/parametric.C:427
 msgid "Mode"
 
 #: cinelerra/gwindowgui.C:80 cinelerra/recordbatches.C:23
 #: plugins/parametric/parametric.C:427
 msgid "Mode"
-msgstr "Modo"
+msgstr "Modo Superposición"
 
 
-#: cinelerra/gwindowgui.C:81 cinelerra/mainmenu.C:251
+#: cinelerra/gwindowgui.C:81 cinelerra/mainmenu.C:255
 #: plugins/crikey/crikeywindow.C:98
 #: plugins/denoiseseltempavg/seltempavgwindow.C:68
 msgid "Mask"
 msgstr "Máscara"
 
 #: plugins/crikey/crikeywindow.C:98
 #: plugins/denoiseseltempavg/seltempavgwindow.C:68
 msgid "Mask"
 msgstr "Máscara"
 
-#: cinelerra/gwindowgui.C:82 cinelerra/mainmenu.C:252
+#: cinelerra/gwindowgui.C:82 cinelerra/mainmenu.C:256
 msgid "Speed"
 msgstr "Velocidad"
 
 msgid "Speed"
 msgstr "Velocidad"
 
@@ -5295,14 +5471,14 @@ msgstr "Mayús-F2"
 #: cinelerra/iec61883input.C:202
 #, c-format
 msgid "write_frame: incomplete frame received.\n"
 #: cinelerra/iec61883input.C:202
 #, c-format
 msgid "write_frame: incomplete frame received.\n"
-msgstr "Write_frame: Marco incompleto recibido\n"
+msgstr "escribir_fotograma: fotograma incompleto recibido\n"
 
 
-#: cinelerra/indexfile.C:476
+#: cinelerra/indexfile.C:485
 #, c-format
 msgid "Creating %s."
 msgstr "Creando %s."
 
 #, c-format
 msgid "Creating %s."
 msgstr "Creando %s."
 
-#: cinelerra/indexfile.C:643
+#: cinelerra/indexfile.C:652
 #, c-format
 msgid "IndexFile::draw_index: index has 0 zoom\n"
 msgstr "Indexfile::draw_index: el index tiene 0 zoom\n"
 #, c-format
 msgid "IndexFile::draw_index: index has 0 zoom\n"
 msgstr "Indexfile::draw_index: el index tiene 0 zoom\n"
@@ -5330,11 +5506,11 @@ msgstr "Todas las ediciones (ondulación)"
 
 #: cinelerra/interfaceprefs.C:37
 msgid "One Edit  (roll)"
 
 #: cinelerra/interfaceprefs.C:37
 msgid "One Edit  (roll)"
-msgstr "Una edición (rollo)"
+msgstr "Una edición (enrrollar)"
 
 #: cinelerra/interfaceprefs.C:38
 msgid "Src Only  (slip)"
 
 #: cinelerra/interfaceprefs.C:38
 msgid "Src Only  (slip)"
-msgstr "Solo origne (separar)"
+msgstr "Src solamente (deslizar)"
 
 #: cinelerra/interfaceprefs.C:39
 msgid "Move Edit (slide)"
 
 #: cinelerra/interfaceprefs.C:39
 msgid "Move Edit (slide)"
@@ -5358,7 +5534,7 @@ msgstr "Keyframe reticle:"
 
 #: cinelerra/interfaceprefs.C:88
 msgid "Snapshot path:"
 
 #: cinelerra/interfaceprefs.C:88
 msgid "Snapshot path:"
-msgstr "Ruta de la instantania"
+msgstr "Ruta de la instantánea:"
 
 #: cinelerra/interfaceprefs.C:93
 msgid "Clicking on edit boundaries does what:"
 
 #: cinelerra/interfaceprefs.C:93
 msgid "Clicking on edit boundaries does what:"
@@ -5378,123 +5554,127 @@ msgstr "Botón 3:"
 
 #: cinelerra/interfaceprefs.C:124 plugins/reroute/reroute.C:204
 msgid "Operation:"
 
 #: cinelerra/interfaceprefs.C:124 plugins/reroute/reroute.C:204
 msgid "Operation:"
-msgstr "Operación"
+msgstr "Operación:"
 
 
-#: cinelerra/interfaceprefs.C:138
+#: cinelerra/interfaceprefs.C:139
 msgid "PIN:"
 msgstr "PIN:"
 
 msgid "PIN:"
 msgstr "PIN:"
 
-#: cinelerra/interfaceprefs.C:150
+#: cinelerra/interfaceprefs.C:151
+msgid "Nested Proxy Path:"
+msgstr "Ruta de proxy anidada:"
+
+#: cinelerra/interfaceprefs.C:158
 msgid "Default LV2_PATH:"
 msgstr "LV2_PATH por defecto:"
 
 msgid "Default LV2_PATH:"
 msgstr "LV2_PATH por defecto:"
 
-#: cinelerra/interfaceprefs.C:164 cinelerra/interfaceprefs.C:169
+#: cinelerra/interfaceprefs.C:173 cinelerra/interfaceprefs.C:178
 msgid "(must be root)"
 msgstr "(debes ser root)"
 
 msgid "(must be root)"
 msgstr "(debes ser root)"
 
-#: cinelerra/interfaceprefs.C:176
+#: cinelerra/interfaceprefs.C:185
 msgid "Min DB for meter:"
 msgid "Min DB for meter:"
-msgstr "Min DB para metro:"
+msgstr "Medidor Audio (db) Mín:"
 
 
-#: cinelerra/interfaceprefs.C:181 plugins/threshold/thresholdwindow.C:500
+#: cinelerra/interfaceprefs.C:190 plugins/threshold/thresholdwindow.C:500
 msgid "Max:"
 msgid "Max:"
-msgstr "Max:"
+msgstr "Máx:"
 
 
-#: cinelerra/interfaceprefs.C:206
+#: cinelerra/interfaceprefs.C:215
 msgid "Index files:"
 msgid "Index files:"
-msgstr "Ficheros de índice:"
+msgstr "Ficheros del índice:"
 
 
-#: cinelerra/interfaceprefs.C:210
+#: cinelerra/interfaceprefs.C:219
 msgid "Index files go here:"
 msgid "Index files go here:"
-msgstr "Los ficheros de index van aquí:"
+msgstr "Los archivos del índice están en:"
 
 
-#: cinelerra/interfaceprefs.C:217
+#: cinelerra/interfaceprefs.C:226
 msgid "Index Path"
 msgstr "Ruta del Índice"
 
 msgid "Index Path"
 msgstr "Ruta del Índice"
 
-#: cinelerra/interfaceprefs.C:217
+#: cinelerra/interfaceprefs.C:226
 msgid "Select the directory for index files"
 msgid "Select the directory for index files"
-msgstr "Seleccione el directorio para los archivos de índice"
+msgstr "Seleccione la carpeta para los archivos de índice"
 
 
-#: cinelerra/interfaceprefs.C:220
+#: cinelerra/interfaceprefs.C:229
 msgid "Size of index file in KB:"
 msgid "Size of index file in KB:"
-msgstr "Tamaño del archivo de índice en KB:"
+msgstr "Tamaño del archivo en KB:"
 
 
-#: cinelerra/interfaceprefs.C:227
+#: cinelerra/interfaceprefs.C:236
 msgid "Number of index files to keep:"
 msgid "Number of index files to keep:"
-msgstr "Número de ficheros de índice que deben mantenerse:"
+msgstr "Número de archivos a guardar:"
 
 
-#: cinelerra/interfaceprefs.C:232
+#: cinelerra/interfaceprefs.C:241
 msgid "Delete existing indexes"
 msgstr "Borrar los índices existentes"
 
 msgid "Delete existing indexes"
 msgstr "Borrar los índices existentes"
 
-#: cinelerra/interfaceprefs.C:236
+#: cinelerra/interfaceprefs.C:245
 msgid "Delete clip thumbnails"
 msgstr "Eliminar miniaturas de clip"
 
 msgid "Delete clip thumbnails"
 msgstr "Eliminar miniaturas de clip"
 
-#: cinelerra/interfaceprefs.C:309
+#: cinelerra/interfaceprefs.C:318
 msgid "build ffmpeg marker indexes"
 msgstr "construir índices de marcadores ffmpeg"
 
 msgid "build ffmpeg marker indexes"
 msgstr "construir índices de marcadores ffmpeg"
 
-#: cinelerra/interfaceprefs.C:400
+#: cinelerra/interfaceprefs.C:409
 msgid "Scan for commercials during toc build"
 msgstr "Buscar anuncios durante construcción del toc"
 
 msgid "Scan for commercials during toc build"
 msgstr "Buscar anuncios durante construcción del toc"
 
-#: cinelerra/interfaceprefs.C:414
+#: cinelerra/interfaceprefs.C:423
 msgid "Android Remote Control"
 msgstr "Control Remoto Android"
 
 msgid "Android Remote Control"
 msgstr "Control Remoto Android"
 
-#: cinelerra/interfaceprefs.C:465
+#: cinelerra/interfaceprefs.C:474
 msgid "Shell Commands"
 msgstr "Comandos del Shell"
 
 msgid "Shell Commands"
 msgstr "Comandos del Shell"
 
-#: cinelerra/interfaceprefs.C:469
+#: cinelerra/interfaceprefs.C:478
 msgid "Main Menu Shell Commands"
 msgstr "Menú Principal Comandos de Shell"
 
 msgid "Main Menu Shell Commands"
 msgstr "Menú Principal Comandos de Shell"
 
-#: cinelerra/interfaceprefs.C:479
+#: cinelerra/interfaceprefs.C:488
 msgid "Import images with a duration of"
 msgid "Import images with a duration of"
-msgstr "Importar imágenes con una duración de"
+msgstr "Duración imágenes importadas"
 
 
-#: cinelerra/interfaceprefs.C:538 cinelerra/shbtnprefs.C:251
+#: cinelerra/interfaceprefs.C:547 cinelerra/shbtnprefs.C:251
 #: cinelerra/shbtnprefs.C:266
 msgid "Never"
 msgstr "Nunca"
 
 #: cinelerra/shbtnprefs.C:266
 msgid "Never"
 msgstr "Nunca"
 
-#: cinelerra/interfaceprefs.C:539
+#: cinelerra/interfaceprefs.C:548
 msgid "Dragging"
 msgstr "Arrastrando"
 
 msgid "Dragging"
 msgstr "Arrastrando"
 
-#: cinelerra/interfaceprefs.C:540 cinelerra/shbtnprefs.C:250
+#: cinelerra/interfaceprefs.C:549 cinelerra/shbtnprefs.C:250
 #: cinelerra/shbtnprefs.C:265
 msgid "Always"
 msgstr "Siempre"
 
 #: cinelerra/shbtnprefs.C:265
 msgid "Always"
 msgstr "Siempre"
 
-#: cinelerra/interfaceprefs.C:555
+#: cinelerra/interfaceprefs.C:564
 msgid "trap sigSEGV"
 msgid "trap sigSEGV"
-msgstr "Trap SIGSEV"
+msgstr "trap SIGSEV"
 
 
-#: cinelerra/interfaceprefs.C:571
+#: cinelerra/interfaceprefs.C:580
 msgid "trap sigINT"
 msgid "trap sigINT"
-msgstr "Trap SIGINT"
+msgstr "trap SIGINT"
 
 
-#: cinelerra/interfaceprefs.C:594
+#: cinelerra/interfaceprefs.C:603
 msgid "Probe Order"
 msgid "Probe Order"
-msgstr "Orden de sondeo:"
+msgstr "Orden de sondeo"
 
 
-#: cinelerra/interfaceprefs.C:598
+#: cinelerra/interfaceprefs.C:607
 msgid "File Open Probe Ordering"
 msgstr "Orden de prueba de apertura de archivo"
 
 msgid "File Open Probe Ordering"
 msgstr "Orden de prueba de apertura de archivo"
 
-#: cinelerra/interfaceprefs.C:611
+#: cinelerra/interfaceprefs.C:620
 msgid "Use yuv420p dvd interlace format"
 msgstr "Use yuv420p DVD entrelazado formato"
 
 msgid "Use yuv420p dvd interlace format"
 msgstr "Use yuv420p DVD entrelazado formato"
 
-#: cinelerra/interfaceprefs.C:644
+#: cinelerra/interfaceprefs.C:653
 msgid "Auto start lv2 gui"
 msgid "Auto start lv2 gui"
-msgstr "Auto iniciar lv2 gui"
+msgstr "Auto iniciar interfaz gráfica de lv2"
 
 
-#: cinelerra/interfaceprefs.C:656
+#: cinelerra/interfaceprefs.C:665
 msgid "Reload plugin index"
 msgstr "Recargar índice de complemento"
 
 msgid "Reload plugin index"
 msgstr "Recargar índice de complemento"
 
@@ -5504,17 +5684,17 @@ msgstr "¡Error!"
 
 #: cinelerra/interlacemodes.h:30
 msgid "Top Fields First"
 
 #: cinelerra/interlacemodes.h:30
 msgid "Top Fields First"
-msgstr "Los campos Mejores Primera"
+msgstr "Campos superiores primero"
 
 #: cinelerra/interlacemodes.h:33
 msgid "Bottom Fields First"
 
 #: cinelerra/interlacemodes.h:33
 msgid "Bottom Fields First"
-msgstr "Los campos Inferior Primera"
+msgstr "Campos inferiores primero"
 
 #: cinelerra/interlacemodes.h:36
 msgid "Not Interlaced"
 msgstr "No entrelazado"
 
 
 #: cinelerra/interlacemodes.h:36
 msgid "Not Interlaced"
 msgstr "No entrelazado"
 
-#: cinelerra/interlacemodes.h:45 plugins/deinterlace-cv/deinterwindow-cv.C:277
+#: cinelerra/interlacemodes.h:46 plugins/deinterlace-cv/deinterwindow-cv.C:277
 #: plugins/motion/motionwindow.C:762 plugins/motion2point/motionwindow.C:767
 #: plugins/motion2point/motionwindow.C:788
 #: plugins/motion-cv/motionwindow-cv.C:624
 #: plugins/motion/motionwindow.C:762 plugins/motion2point/motionwindow.C:767
 #: plugins/motion2point/motionwindow.C:788
 #: plugins/motion-cv/motionwindow-cv.C:624
@@ -5522,31 +5702,31 @@ msgstr "No entrelazado"
 msgid "Do Nothing"
 msgstr "No hacer nada"
 
 msgid "Do Nothing"
 msgstr "No hacer nada"
 
-#: cinelerra/interlacemodes.h:48
+#: cinelerra/interlacemodes.h:49
 msgid "Shift Up 1 pixel"
 msgstr "Desplazar arriba 1 píxel"
 
 msgid "Shift Up 1 pixel"
 msgstr "Desplazar arriba 1 píxel"
 
-#: cinelerra/interlacemodes.h:51
+#: cinelerra/interlacemodes.h:52
 msgid "Shift Down 1 pixel"
 msgstr "Desplazar abajo 1 píxel"
 
 msgid "Shift Down 1 pixel"
 msgstr "Desplazar abajo 1 píxel"
 
-#: cinelerra/interlacemodes.h:58
+#: cinelerra/interlacemodes.h:59
 msgid "unknown"
 msgstr "desconocido"
 
 msgid "unknown"
 msgstr "desconocido"
 
-#: cinelerra/interlacemodes.h:59
+#: cinelerra/interlacemodes.h:60
 msgid "non-interlaced, progressive frame"
 msgstr "marco progresivo no entrelazado"
 
 msgid "non-interlaced, progressive frame"
 msgstr "marco progresivo no entrelazado"
 
-#: cinelerra/interlacemodes.h:60
+#: cinelerra/interlacemodes.h:61
 msgid "interlaced, top-field first"
 msgid "interlaced, top-field first"
-msgstr "Entrelazado, la parte superior del campo en primer lugar"
+msgstr "entrelazado, campo superior primero"
 
 
-#: cinelerra/interlacemodes.h:61
+#: cinelerra/interlacemodes.h:62
 msgid "interlaced, bottom-field first"
 msgid "interlaced, bottom-field first"
-msgstr "Entrelazado, de abajo hacia el primer campo"
+msgstr "entrelazado, campo inferior primero"
 
 
-#: cinelerra/interlacemodes.h:62
+#: cinelerra/interlacemodes.h:63
 msgid "mixed, \"refer to frame header\""
 msgstr "mixto, \"consulte el encabezado del marco\""
 
 msgid "mixed, \"refer to frame header\""
 msgstr "mixto, \"consulte el encabezado del marco\""
 
@@ -5565,7 +5745,7 @@ msgstr "aplicar predefinido"
 
 #: cinelerra/keyframegui.C:439
 msgid "edit keyframe"
 
 #: cinelerra/keyframegui.C:439
 msgid "edit keyframe"
-msgstr "Editar fotograma clave"
+msgstr "editar fotograma clave"
 
 #: cinelerra/keyframegui.C:480
 msgid "Keyframe parameters:"
 
 #: cinelerra/keyframegui.C:480
 msgid "Keyframe parameters:"
@@ -5577,7 +5757,7 @@ msgstr "Editar valor:"
 
 #: cinelerra/keyframegui.C:510
 msgid "Preset title:"
 
 #: cinelerra/keyframegui.C:510
 msgid "Preset title:"
-msgstr "Título predefinido"
+msgstr "Título predefinido:"
 
 #: cinelerra/keyframegui.C:673
 msgid "Apply to all selected keyframes"
 
 #: cinelerra/keyframegui.C:673
 msgid "Apply to all selected keyframes"
@@ -5593,11 +5773,11 @@ msgstr "Mostrar configuración del plugin"
 
 #: cinelerra/keyframepopup.C:180
 msgid "Delete keyframe"
 
 #: cinelerra/keyframepopup.C:180
 msgid "Delete keyframe"
-msgstr "borrar fotograma clave"
+msgstr "Borrar fotograma clave"
 
 #: cinelerra/keyframepopup.C:192 cinelerra/keyframepopup.C:196
 msgid "delete keyframe"
 
 #: cinelerra/keyframepopup.C:192 cinelerra/keyframepopup.C:196
 msgid "delete keyframe"
-msgstr "Borrar fotograma clave"
+msgstr "borrar fotograma clave"
 
 #: cinelerra/keyframepopup.C:209 cinelerra/keyframepopup.C:535
 msgid "Hide keyframe type"
 
 #: cinelerra/keyframepopup.C:209 cinelerra/keyframepopup.C:535
 msgid "Hide keyframe type"
@@ -5605,7 +5785,7 @@ msgstr "Ocultar tipo de fotograma clave"
 
 #: cinelerra/keyframepopup.C:227
 msgid "Show keyframe settings"
 
 #: cinelerra/keyframepopup.C:227
 msgid "Show keyframe settings"
-msgstr "Mostrar preferencias del fotograma clave."
+msgstr "Mostrar preferencias del fotograma clave"
 
 #: cinelerra/keyframepopup.C:342
 msgid "Copy keyframe"
 
 #: cinelerra/keyframepopup.C:342
 msgid "Copy keyframe"
@@ -5625,7 +5805,7 @@ msgstr "editar disjunto"
 
 #: cinelerra/keyframepopup.C:463
 msgid "misconfigured"
 
 #: cinelerra/keyframepopup.C:463
 msgid "misconfigured"
-msgstr "Mal configurado"
+msgstr "mal configurado"
 
 #: cinelerra/keyframepopup.C:478 cinelerra/keyframepopup.C:484
 msgid "change keyframe curve mode"
 
 #: cinelerra/keyframepopup.C:478 cinelerra/keyframepopup.C:484
 msgid "change keyframe curve mode"
@@ -5636,7 +5816,7 @@ msgid "Edit Params..."
 msgstr "Editar parámetros..."
 
 #: cinelerra/keyframepopup.C:592 cinelerra/keyframepopup.C:595
 msgstr "Editar parámetros..."
 
 #: cinelerra/keyframepopup.C:592 cinelerra/keyframepopup.C:595
-#: cinelerra/mwindowedit.C:1212
+#: cinelerra/mwindowedit.C:1213
 msgid "mute"
 msgstr "mutear"
 
 msgid "mute"
 msgstr "mutear"
 
@@ -5650,7 +5830,7 @@ msgstr ": Label"
 
 #: cinelerra/labeledit.C:102
 msgid "Label Text:"
 
 #: cinelerra/labeledit.C:102
 msgid "Label Text:"
-msgstr "Texto de etiqueta"
+msgstr "Texto de etiqueta:"
 
 #: cinelerra/labelnavigate.C:64
 msgid "Previous label"
 
 #: cinelerra/labelnavigate.C:64
 msgid "Previous label"
@@ -5668,79 +5848,102 @@ msgstr "Ir a"
 msgid ": Levels"
 msgstr "Niveles"
 
 msgid ": Levels"
 msgstr "Niveles"
 
-#: cinelerra/loadfile.C:163
+#: cinelerra/loadfile.C:124
+msgid ""
+"Other projects can change this project\n"
+"and this can become a broken link"
+msgstr ""
+"Otros proyectos pueden cambiar este proyecto\n"
+"y esto puede convertirse en un enlace roto"
+
+#: cinelerra/loadfile.C:169
 msgid ": Load"
 msgstr ": Carga"
 
 msgid ": Load"
 msgstr ": Carga"
 
-#: cinelerra/loadfile.C:164
+#: cinelerra/loadfile.C:170
 msgid "Select files to load:"
 msgstr "Seleccionar archivos para cargar:"
 
 msgid "Select files to load:"
 msgstr "Seleccionar archivos para cargar:"
 
-#: cinelerra/loadfile.C:234
+#: cinelerra/loadfile.C:245
 msgid ": Locate file"
 msgstr ": Localizar el archivo"
 
 msgid ": Locate file"
 msgstr ": Localizar el archivo"
 
-#: cinelerra/loadfile.C:287
+#: cinelerra/loadfile.C:298
 msgid "Load backup"
 msgstr "Cargar copia de seguridad"
 
 msgid "Load backup"
 msgstr "Cargar copia de seguridad"
 
-#: cinelerra/loadmode.C:43
+#: cinelerra/loadmode.C:28
+msgid "Load strategy:"
+msgstr "Estrategia de inserción:"
+
+msgid "Insertion strategy:"
+msgstr "Estrategia de inserción:"
+
+#: cinelerra/loadmode.C:29
+msgid "EDL strategy:"
+msgstr "Estrategia EDL:"
+
+#: cinelerra/loadmode.C:48
 msgid "Insert nothing"
 msgstr "No insertar nada"
 
 msgid "Insert nothing"
 msgstr "No insertar nada"
 
-#: cinelerra/loadmode.C:44
+#: cinelerra/loadmode.C:49
 msgid "Replace current project"
 msgstr "Reemplazar proyecto actual"
 
 msgid "Replace current project"
 msgstr "Reemplazar proyecto actual"
 
-#: cinelerra/loadmode.C:45
+#: cinelerra/loadmode.C:50
 msgid "Replace current project and concatenate tracks"
 msgstr "Reemplazar proyecto actual y concatenar pistas"
 
 msgid "Replace current project and concatenate tracks"
 msgstr "Reemplazar proyecto actual y concatenar pistas"
 
-#: cinelerra/loadmode.C:46
+#: cinelerra/loadmode.C:51
 msgid "Append in new tracks"
 msgstr "Añadir en una pista nueva"
 
 msgid "Append in new tracks"
 msgstr "Añadir en una pista nueva"
 
-#: cinelerra/loadmode.C:47
+#: cinelerra/loadmode.C:52
 msgid "Concatenate to existing tracks"
 msgstr "Concatenar con las pistas existentes"
 
 msgid "Concatenate to existing tracks"
 msgstr "Concatenar con las pistas existentes"
 
-#: cinelerra/loadmode.C:48
+#: cinelerra/loadmode.C:53
 msgid "Paste over selection/at insertion point"
 msgstr "Pegar sobre la selección/en el punto de inserción"
 
 msgid "Paste over selection/at insertion point"
 msgstr "Pegar sobre la selección/en el punto de inserción"
 
-#: cinelerra/loadmode.C:49
+#: cinelerra/loadmode.C:54
 msgid "Create new resources only"
 msgstr "Crear solo recursos nuevos"
 
 msgid "Create new resources only"
 msgstr "Crear solo recursos nuevos"
 
-#: cinelerra/loadmode.C:50
+#: cinelerra/loadmode.C:55
 msgid "Nest sequence"
 msgid "Nest sequence"
-msgstr "Secuencia de anidado"
+msgstr "Anidar secuencia"
 
 
-#: cinelerra/loadmode.C:118 cinelerra/loadmode.C:167
-msgid "Load strategy:"
-msgstr "Estrategia de inserción:"
+#: cinelerra/loadmode.C:56
+msgid "Nested"
+msgstr "Anidado"
+
+#: cinelerra/loadmode.C:57
+msgid "Reference"
+msgstr "Referencia"
 
 #: cinelerra/localsession.C:63
 #, c-format
 msgid "Program"
 msgstr "Programa"
 
 
 #: cinelerra/localsession.C:63
 #, c-format
 msgid "Program"
 msgstr "Programa"
 
-#: cinelerra/main.C:207
+#: cinelerra/main.C:209
 #, c-format
 msgid ": Could not set locale.\n"
 msgstr ": No se pudo establecer la configuración regional.\n"
 
 #, c-format
 msgid ": Could not set locale.\n"
 msgstr ": No se pudo establecer la configuración regional.\n"
 
-#: cinelerra/main.C:238
+#: cinelerra/main.C:240
 #, c-format
 msgid "%s: -c needs a filename.\n"
 msgstr "%s:. -c Necesita un nombre de archivo\n"
 
 #, c-format
 msgid "%s: -c needs a filename.\n"
 msgstr "%s:. -c Necesita un nombre de archivo\n"
 
-#: cinelerra/main.C:253
+#: cinelerra/main.C:255
 #, c-format
 msgid "-b may not be used by the user.\n"
 msgstr "-b No puede ser utilizada por el usuario.\n"
 
 #, c-format
 msgid "-b may not be used by the user.\n"
 msgstr "-b No puede ser utilizada por el usuario.\n"
 
-#: cinelerra/main.C:309
+#: cinelerra/main.C:311
 #, c-format
 msgid ""
 "\n"
 #, c-format
 msgid ""
 "\n"
@@ -5749,7 +5952,7 @@ msgstr ""
 "\n"
 "Uso:\n"
 
 "\n"
 "Uso:\n"
 
-#: cinelerra/main.C:310
+#: cinelerra/main.C:312
 #, c-format
 msgid ""
 "%s [-f] [-c configuration] [-d port] [-n nice] [-r batch file] [filenames]\n"
 #, c-format
 msgid ""
 "%s [-f] [-c configuration] [-d port] [-n nice] [-r batch file] [filenames]\n"
@@ -5758,49 +5961,49 @@ msgstr ""
 "%s [-f] [configuración -c] [puerto -d] [nice -n] [ lote ficheros -r] [nombre de archivo]\n"
 "\n"
 
 "%s [-f] [configuración -c] [puerto -d] [nice -n] [ lote ficheros -r] [nombre de archivo]\n"
 "\n"
 
-#: cinelerra/main.C:311
+#: cinelerra/main.C:313
 #, c-format
 msgid "-d = Run in the background as renderfarm client.  The port (400) is optional.\n"
 msgstr "-d = Ejecutar en el fondo como cliente de granja de renderizado. El puerto (400) es opcional.\n"
 
 #, c-format
 msgid "-d = Run in the background as renderfarm client.  The port (400) is optional.\n"
 msgstr "-d = Ejecutar en el fondo como cliente de granja de renderizado. El puerto (400) es opcional.\n"
 
-#: cinelerra/main.C:312
+#: cinelerra/main.C:314
 #, c-format
 msgid "-f = Run in the foreground as renderfarm client.  Substitute for -d.\n"
 msgstr "-f = Ejecutar en primer plan como cliente de granja de renderizado.  Substituir por -d.\n"
 
 #, c-format
 msgid "-f = Run in the foreground as renderfarm client.  Substitute for -d.\n"
 msgstr "-f = Ejecutar en primer plan como cliente de granja de renderizado.  Substituir por -d.\n"
 
-#: cinelerra/main.C:313
+#: cinelerra/main.C:315
 #, c-format
 msgid "-n = Nice value if running as renderfarm client. (19)\n"
 msgstr "-n = Buen valor si se ejecuta como cliente de granja de renderizado. (20)\n"
 
 #, c-format
 msgid "-n = Nice value if running as renderfarm client. (19)\n"
 msgstr "-n = Buen valor si se ejecuta como cliente de granja de renderizado. (20)\n"
 
-#: cinelerra/main.C:314
+#: cinelerra/main.C:316
 #, c-format
 msgid "-c = Configuration file to use instead of %s/%s.\n"
 msgstr "-c = Archivo de configuración para utilizar en lugar de %s /%s.\n"
 
 #, c-format
 msgid "-c = Configuration file to use instead of %s/%s.\n"
 msgstr "-c = Archivo de configuración para utilizar en lugar de %s /%s.\n"
 
-#: cinelerra/main.C:316
+#: cinelerra/main.C:318
 #, c-format
 msgid "-r = batch render the contents of the batch file (%s/%s) with no GUI.  batch file is optional.\n"
 msgstr "-r = Renderizado por lotes el contenido del archivo por lotes (%s /%s) sin archivo por lotes GUI. Es opcional.\n"
 
 #, c-format
 msgid "-r = batch render the contents of the batch file (%s/%s) with no GUI.  batch file is optional.\n"
 msgstr "-r = Renderizado por lotes el contenido del archivo por lotes (%s /%s) sin archivo por lotes GUI. Es opcional.\n"
 
-#: cinelerra/main.C:318
+#: cinelerra/main.C:320
 #, c-format
 msgid "-S = do not reload perpetual session\n"
 msgstr "-S = no recargar sesión perpetua\n"
 
 #, c-format
 msgid "-S = do not reload perpetual session\n"
 msgstr "-S = no recargar sesión perpetua\n"
 
-#: cinelerra/main.C:319
+#: cinelerra/main.C:321
 #, c-format
 msgid "-x = reload from backup\n"
 msgstr "-x = recargar desde copia de seguridad\n"
 
 #, c-format
 msgid "-x = reload from backup\n"
 msgstr "-x = recargar desde copia de seguridad\n"
 
-#: cinelerra/main.C:320
+#: cinelerra/main.C:322
 #, c-format
 msgid ""
 "filenames = files to load\n"
 "\n"
 "\n"
 msgstr ""
 #, c-format
 msgid ""
 "filenames = files to load\n"
 "\n"
 "\n"
 msgstr ""
-"Nombres de archivo = Archivos para cargar\n"
+"nombres de archivo = archivos para cargar\n"
 "\n"
 "\n"
 
 "\n"
 "\n"
 
@@ -5810,461 +6013,462 @@ msgstr ": Mensajes"
 
 #: cinelerra/mainerror.C:61
 msgid "Message log:"
 
 #: cinelerra/mainerror.C:61
 msgid "Message log:"
-msgstr "Mensaje de registro"
+msgstr "Mensaje de registro:"
 
 #: cinelerra/mainindexes.C:183 cinelerra/threadindexer.C:137
 msgid "Building Indexes..."
 msgstr "Construyendo indices..."
 
 
 #: cinelerra/mainindexes.C:183 cinelerra/threadindexer.C:137
 msgid "Building Indexes..."
 msgstr "Construyendo indices..."
 
-#: cinelerra/mainmenu.C:145 cinelerra/shbtnprefs.C:192 plugins/svg/svgwin.C:267
+#: cinelerra/mainmenu.C:146 cinelerra/shbtnprefs.C:192 plugins/svg/svgwin.C:267
 msgid "Edit"
 msgstr "Editar"
 
 msgid "Edit"
 msgstr "Editar"
 
-#: cinelerra/mainmenu.C:169
+#: cinelerra/mainmenu.C:170
 msgid "Keyframes"
 msgstr "Fotogramas clave"
 
 msgid "Keyframes"
 msgstr "Fotogramas clave"
 
-#: cinelerra/mainmenu.C:186 cinelerra/mixersalign.C:261 cinelerra/new.C:344
+#: cinelerra/mainmenu.C:187 cinelerra/mixersalign.C:261 cinelerra/new.C:344
 #: cinelerra/setformat.C:303
 msgid "Audio"
 msgstr "Audio"
 
 #: cinelerra/setformat.C:303
 msgid "Audio"
 msgstr "Audio"
 
-#: cinelerra/mainmenu.C:195 cinelerra/new.C:375 cinelerra/setformat.C:342
+#: cinelerra/mainmenu.C:196 cinelerra/new.C:375 cinelerra/setformat.C:342
 msgid "Video"
 msgstr "Vídeo"
 
 msgid "Video"
 msgstr "Vídeo"
 
-#: cinelerra/mainmenu.C:202
+#: cinelerra/mainmenu.C:203
 msgid "Tracks"
 msgstr "Pistas"
 
 msgid "Tracks"
 msgstr "Pistas"
 
-#: cinelerra/mainmenu.C:214
+#: cinelerra/mainmenu.C:215
 msgid "Settings"
 msgstr "Ajustes"
 
 msgid "Settings"
 msgstr "Ajustes"
 
-#: cinelerra/mainmenu.C:248 cinelerra/vpatchgui.C:272
+#: cinelerra/mainmenu.C:252 cinelerra/vpatchgui.C:272
 msgid "Overlay mode"
 msgid "Overlay mode"
-msgstr "Modo de superposición:"
+msgstr "Modo de superposición"
 
 
-#: cinelerra/mainmenu.C:267
+#: cinelerra/mainmenu.C:271
 msgid "Window"
 msgstr "Ventana"
 
 msgid "Window"
 msgstr "Ventana"
 
-#: cinelerra/mainmenu.C:278
+#: cinelerra/mainmenu.C:282
 msgid "Tile left"
 msgstr "Mosaico izquierda"
 
 msgid "Tile left"
 msgstr "Mosaico izquierda"
 
-#: cinelerra/mainmenu.C:279
+#: cinelerra/mainmenu.C:283
 msgid "Tile right"
 msgstr "Mosaico derecho"
 
 msgid "Tile right"
 msgstr "Mosaico derecho"
 
-#: cinelerra/mainmenu.C:282
+#: cinelerra/mainmenu.C:286
 msgid "Default positions"
 msgstr "Posiciones predeterminadas"
 
 msgid "Default positions"
 msgstr "Posiciones predeterminadas"
 
-#: cinelerra/mainmenu.C:282
+#: cinelerra/mainmenu.C:286
 msgid "Ctrl-P"
 msgstr "Ctrl-P"
 
 msgid "Ctrl-P"
 msgstr "Ctrl-P"
 
-#: cinelerra/mainmenu.C:283
+#: cinelerra/mainmenu.C:287
 msgid "Load layout..."
 msgid "Load layout..."
-msgstr "Cargar diseño"
+msgstr "Cargar diseño..."
 
 
-#: cinelerra/mainmenu.C:285
+#: cinelerra/mainmenu.C:289
 msgid "Save layout..."
 msgid "Save layout..."
-msgstr "Guardar diseño"
+msgstr "Guardar diseño..."
 
 
-#: cinelerra/mainmenu.C:552
+#: cinelerra/mainmenu.C:556
 msgid "Dumps..."
 msgstr "Volcados..."
 
 msgid "Dumps..."
 msgstr "Volcados..."
 
-#: cinelerra/mainmenu.C:573
+#: cinelerra/mainmenu.C:577
 msgid "Dump CICache"
 msgstr "Vaciar CICache"
 
 msgid "Dump CICache"
 msgstr "Vaciar CICache"
 
-#: cinelerra/mainmenu.C:583
+#: cinelerra/mainmenu.C:587
 msgid "Dump EDL"
 msgstr "Vaciar EDL"
 
 msgid "Dump EDL"
 msgstr "Vaciar EDL"
 
-#: cinelerra/mainmenu.C:595
+#: cinelerra/mainmenu.C:599
 msgid "Dump Plugins"
 msgstr "Vaciar Plugins"
 
 msgid "Dump Plugins"
 msgstr "Vaciar Plugins"
 
-#: cinelerra/mainmenu.C:607
+#: cinelerra/mainmenu.C:611
 msgid "Dump Assets"
 msgstr "Vaciar clips"
 
 msgid "Dump Assets"
 msgstr "Vaciar clips"
 
-#: cinelerra/mainmenu.C:617
+#: cinelerra/mainmenu.C:621
 msgid "Dump Undo"
 msgstr "Deshacer volcado"
 
 msgid "Dump Undo"
 msgstr "Deshacer volcado"
 
-#: cinelerra/mainmenu.C:630 cinelerra/mixersalign.C:482
+#: cinelerra/mainmenu.C:634 cinelerra/mixersalign.C:482
 msgid "Undo"
 msgstr "Deshacer"
 
 msgid "Undo"
 msgstr "Deshacer"
 
-#: cinelerra/mainmenu.C:643
+#: cinelerra/mainmenu.C:647
 #, c-format
 msgid "Undo %s"
 msgstr "Deshacer %s"
 
 #, c-format
 msgid "Undo %s"
 msgstr "Deshacer %s"
 
-#: cinelerra/mainmenu.C:649
+#: cinelerra/mainmenu.C:653
 msgid "Redo"
 msgstr "Rehacer"
 
 msgid "Redo"
 msgstr "Rehacer"
 
-#: cinelerra/mainmenu.C:649
+#: cinelerra/mainmenu.C:653
 msgid "Shift-Z"
 msgstr "Mayús-Z"
 
 msgid "Shift-Z"
 msgstr "Mayús-Z"
 
-#: cinelerra/mainmenu.C:664
+#: cinelerra/mainmenu.C:668
 #, c-format
 msgid "Redo %s"
 msgstr "Rehacer %s"
 
 #, c-format
 msgid "Redo %s"
 msgstr "Rehacer %s"
 
-#: cinelerra/mainmenu.C:670
+#: cinelerra/mainmenu.C:674
 msgid "Cut keyframes"
 msgstr "Cortar fotogramas clave"
 
 msgid "Cut keyframes"
 msgstr "Cortar fotogramas clave"
 
-#: cinelerra/mainmenu.C:670
+#: cinelerra/mainmenu.C:674
 msgid "Shift-X"
 msgstr "Mayús-X"
 
 msgid "Shift-X"
 msgstr "Mayús-X"
 
-#: cinelerra/mainmenu.C:684
+#: cinelerra/mainmenu.C:688
 msgid "Copy keyframes"
 msgstr "Copiar fotogramas clave"
 
 msgid "Copy keyframes"
 msgstr "Copiar fotogramas clave"
 
-#: cinelerra/mainmenu.C:684
+#: cinelerra/mainmenu.C:688
 msgid "Shift-C"
 msgstr "Mayús-C"
 
 msgid "Shift-C"
 msgstr "Mayús-C"
 
-#: cinelerra/mainmenu.C:698
+#: cinelerra/mainmenu.C:702
 msgid "Paste keyframes"
 msgstr "Pegar fotogramas clave"
 
 msgid "Paste keyframes"
 msgstr "Pegar fotogramas clave"
 
-#: cinelerra/mainmenu.C:698
+#: cinelerra/mainmenu.C:702
 msgid "Shift-V"
 msgstr "Mayús-V"
 
 msgid "Shift-V"
 msgstr "Mayús-V"
 
-#: cinelerra/mainmenu.C:712
+#: cinelerra/mainmenu.C:716
 msgid "Clear keyframes"
 msgid "Clear keyframes"
-msgstr "Limpiar Fotogramas clave"
+msgstr "Eliminar Fotogramas clave"
 
 
-#: cinelerra/mainmenu.C:712
+#: cinelerra/mainmenu.C:716
 msgid "Shift-Del"
 msgid "Shift-Del"
-msgstr "Mayús-Del"
+msgstr "Mayús-Supr"
 
 
-#: cinelerra/mainmenu.C:728
+#: cinelerra/mainmenu.C:732
 msgid "Change to linear"
 msgstr "Cambiar a lineal"
 
 msgid "Change to linear"
 msgstr "Cambiar a lineal"
 
-#: cinelerra/mainmenu.C:743
+#: cinelerra/mainmenu.C:747
 msgid "Change to smooth"
 msgstr "Cambiar a suavizar"
 
 msgid "Change to smooth"
 msgstr "Cambiar a suavizar"
 
-#: cinelerra/mainmenu.C:757
+#: cinelerra/mainmenu.C:761
 msgid "Create curve type..."
 msgstr "Crear tipo curva..."
 
 msgid "Create curve type..."
 msgstr "Crear tipo curva..."
 
-#: cinelerra/mainmenu.C:816
+#: cinelerra/mainmenu.C:820
 msgid "Cut default keyframe"
 msgstr "Cortar fotograma clave por defecto"
 
 msgid "Cut default keyframe"
 msgstr "Cortar fotograma clave por defecto"
 
-#: cinelerra/mainmenu.C:816
+#: cinelerra/mainmenu.C:820
 msgid "Alt-x"
 msgstr "Alt-x"
 
 msgid "Alt-x"
 msgstr "Alt-x"
 
-#: cinelerra/mainmenu.C:830
+#: cinelerra/mainmenu.C:834
 msgid "Copy default keyframe"
 msgstr "Copiar fotograma por defecto"
 
 msgid "Copy default keyframe"
 msgstr "Copiar fotograma por defecto"
 
-#: cinelerra/mainmenu.C:830
+#: cinelerra/mainmenu.C:834
 msgid "Alt-c"
 msgstr "Alt-c"
 
 msgid "Alt-c"
 msgstr "Alt-c"
 
-#: cinelerra/mainmenu.C:844
+#: cinelerra/mainmenu.C:848
 msgid "Paste default keyframe"
 msgstr "Pegar fotograma clave por defecto"
 
 msgid "Paste default keyframe"
 msgstr "Pegar fotograma clave por defecto"
 
-#: cinelerra/mainmenu.C:844
+#: cinelerra/mainmenu.C:848
 msgid "Alt-v"
 msgstr "Alt-v"
 
 msgid "Alt-v"
 msgstr "Alt-v"
 
-#: cinelerra/mainmenu.C:858
+#: cinelerra/mainmenu.C:862
 msgid "Clear default keyframe"
 msgstr "Borrar fotograma clave por defecto"
 
 msgid "Clear default keyframe"
 msgstr "Borrar fotograma clave por defecto"
 
-#: cinelerra/mainmenu.C:858
+#: cinelerra/mainmenu.C:862
 msgid "Alt-Del"
 msgid "Alt-Del"
-msgstr "Alt-Del"
+msgstr "Alt-Supr"
 
 
-#: cinelerra/mainmenu.C:872
+#: cinelerra/mainmenu.C:876
 msgid "Split | Cut"
 msgstr "Dividir | Cortar"
 
 msgid "Split | Cut"
 msgstr "Dividir | Cortar"
 
-#: cinelerra/mainmenu.C:920
+#: cinelerra/mainmenu.C:924
 msgid "Clear..."
 msgid "Clear..."
-msgstr "Limpiar..."
+msgstr "Eliminar -->..."
 
 
-#: cinelerra/mainmenu.C:940 cinelerra/recordbatches.C:546
-#: cinelerra/swindow.C:563 plugins/compressor/compressor.C:1395
+#: cinelerra/mainmenu.C:944 cinelerra/recordbatches.C:546
+#: cinelerra/swindow.C:563 plugins/compressor/compressor.C:688
+#: plugins/compressormulti/comprmultigui.C:621
 #: plugins/histogram_bezier/bistogramwindow.C:82
 #: plugins/histogram_bezier/bistogramwindow.C:83 plugins/piano/piano.C:906
 #: plugins/histogram_bezier/bistogramwindow.C:82
 #: plugins/histogram_bezier/bistogramwindow.C:83 plugins/piano/piano.C:906
-#: plugins/synthesizer/synthesizer.C:1368
+#: plugins/synthesizer/synthesizer.C:1374
 msgid "Clear"
 msgid "Clear"
-msgstr "Limpiar"
+msgstr "Eliminar (Elimina el hueco)"
 
 
-#: cinelerra/mainmenu.C:956
+#: cinelerra/mainmenu.C:960
 msgid "Paste silence"
 msgstr "Pegar Silencio"
 
 msgid "Paste silence"
 msgstr "Pegar Silencio"
 
-#: cinelerra/mainmenu.C:956
+#: cinelerra/mainmenu.C:960
 msgid "Shift-Space"
 msgstr "Mayús-Space"
 
 msgid "Shift-Space"
 msgstr "Mayús-Space"
 
-#: cinelerra/mainmenu.C:970
+#: cinelerra/mainmenu.C:974
 msgid "Select All"
 msgstr "Seleccionar todo"
 
 msgid "Select All"
 msgstr "Seleccionar todo"
 
-#: cinelerra/mainmenu.C:982
+#: cinelerra/mainmenu.C:986
 msgid "Clear Hard Edges"
 msgid "Clear Hard Edges"
-msgstr "Limpiar bordes duros"
+msgstr "Eliminar bordes duros"
 
 
-#: cinelerra/mainmenu.C:993
+#: cinelerra/mainmenu.C:997
 msgid "Clear labels"
 msgid "Clear labels"
-msgstr "Limpiar etiquetas"
+msgstr "Eliminar etiquetas"
 
 
-#: cinelerra/mainmenu.C:1017
+#: cinelerra/mainmenu.C:1021
 msgid "Cut ads"
 msgstr "Cortar anuncios"
 
 msgid "Cut ads"
 msgstr "Cortar anuncios"
 
-#: cinelerra/mainmenu.C:1029
+#: cinelerra/mainmenu.C:1033
 msgid "Detach transitions"
 msgid "Detach transitions"
-msgstr "Separar transiciones"
+msgstr "Quitar transiciones"
 
 
-#: cinelerra/mainmenu.C:1041
+#: cinelerra/mainmenu.C:1045
 msgid "Mute Region"
 msgid "Mute Region"
-msgstr "Mutear región"
+msgstr "Eliminar selección dejando el hueco"
 
 
-#: cinelerra/mainmenu.C:1055
+#: cinelerra/mainmenu.C:1059
 msgid "Trim Selection"
 msgstr "Recorta selección"
 
 msgid "Trim Selection"
 msgstr "Recorta selección"
 
-#: cinelerra/mainmenu.C:1080 cinelerra/mainmenu.C:1148
+#: cinelerra/mainmenu.C:1084 cinelerra/mainmenu.C:1152
 #: cinelerra/trackpopup.C:206
 msgid "Add track"
 msgstr "Añadir pista"
 
 #: cinelerra/trackpopup.C:206
 msgid "Add track"
 msgstr "Añadir pista"
 
-#: cinelerra/mainmenu.C:1093 cinelerra/mainmenu.C:1163
+#: cinelerra/mainmenu.C:1097 cinelerra/mainmenu.C:1167
 #: cinelerra/trackpopup.C:193
 msgid "Delete track"
 msgstr "Eliminar pista"
 
 #: cinelerra/trackpopup.C:193
 msgid "Delete track"
 msgstr "Eliminar pista"
 
-#: cinelerra/mainmenu.C:1104 cinelerra/mainmenu.C:1189
+#: cinelerra/mainmenu.C:1108 cinelerra/mainmenu.C:1193
 msgid "Default Transition"
 msgstr "Transición predeterminada"
 
 msgid "Default Transition"
 msgstr "Transición predeterminada"
 
-#: cinelerra/mainmenu.C:1118
+#: cinelerra/mainmenu.C:1122
 msgid "Map 1:1"
 msgstr "Mapa 1:1"
 
 msgid "Map 1:1"
 msgstr "Mapa 1:1"
 
-#: cinelerra/mainmenu.C:1130
+#: cinelerra/mainmenu.C:1134
 msgid "Map 5.1:2"
 msgstr "Mapa 5.1:2"
 
 msgid "Map 5.1:2"
 msgstr "Mapa 5.1:2"
 
-#: cinelerra/mainmenu.C:1148
+#: cinelerra/mainmenu.C:1152
 msgid "Shift-T"
 msgstr "Mayús-T"
 
 msgid "Shift-T"
 msgstr "Mayús-T"
 
-#: cinelerra/mainmenu.C:1176
+#: cinelerra/mainmenu.C:1180
 msgid "Reset Translation"
 msgstr "Restablecer Trasformación"
 
 msgid "Reset Translation"
 msgstr "Restablecer Trasformación"
 
-#: cinelerra/mainmenu.C:1189
+#: cinelerra/mainmenu.C:1193
 msgid "Shift-U"
 msgstr "Mayús-U"
 
 msgid "Shift-U"
 msgstr "Mayús-U"
 
-#: cinelerra/mainmenu.C:1218
+#: cinelerra/mainmenu.C:1222
 msgid "Delete tracks"
 msgstr "Eliminar las pistas"
 
 msgid "Delete tracks"
 msgstr "Eliminar las pistas"
 
-#: cinelerra/mainmenu.C:1230
+#: cinelerra/mainmenu.C:1234
 msgid "Delete first track"
 msgstr "Eliminar primera pista"
 
 msgid "Delete first track"
 msgstr "Eliminar primera pista"
 
-#: cinelerra/mainmenu.C:1246
+#: cinelerra/mainmenu.C:1250
 msgid "Delete last track"
 msgstr "Eliminar última pista"
 
 msgid "Delete last track"
 msgstr "Eliminar última pista"
 
-#: cinelerra/mainmenu.C:1261
+#: cinelerra/mainmenu.C:1265
 msgid "Move tracks up"
 msgstr "Mover pistas hacia arriba"
 
 msgid "Move tracks up"
 msgstr "Mover pistas hacia arriba"
 
-#: cinelerra/mainmenu.C:1261
+#: cinelerra/mainmenu.C:1265
 msgid "Shift-Up"
 msgstr "Mayús-Up"
 
 msgid "Shift-Up"
 msgstr "Mayús-Up"
 
-#: cinelerra/mainmenu.C:1275
+#: cinelerra/mainmenu.C:1279
 msgid "Move tracks down"
 msgstr "Mover pistas hacia abajo"
 
 msgid "Move tracks down"
 msgstr "Mover pistas hacia abajo"
 
-#: cinelerra/mainmenu.C:1275
+#: cinelerra/mainmenu.C:1279
 msgid "Shift-Down"
 msgstr "Mayús-Down"
 
 msgid "Shift-Down"
 msgstr "Mayús-Down"
 
-#: cinelerra/mainmenu.C:1291
+#: cinelerra/mainmenu.C:1295
 msgid "Concatenate tracks"
 msgstr "Concatenar pistas"
 
 msgid "Concatenate tracks"
 msgstr "Concatenar pistas"
 
-#: cinelerra/mainmenu.C:1308
+#: cinelerra/mainmenu.C:1312
 msgid "Loop Playback"
 msgstr "Reproducción en bucle"
 
 msgid "Loop Playback"
 msgstr "Reproducción en bucle"
 
-#: cinelerra/mainmenu.C:1308
+#: cinelerra/mainmenu.C:1312
 msgid "Shift-L"
 msgstr "Mayús-L"
 
 msgid "Shift-L"
 msgstr "Mayús-L"
 
-#: cinelerra/mainmenu.C:1330
+#: cinelerra/mainmenu.C:1334
 msgid "Add subttl"
 msgstr "Añadir SUBTTL"
 
 msgid "Add subttl"
 msgstr "Añadir SUBTTL"
 
-#: cinelerra/mainmenu.C:1330
+#: cinelerra/mainmenu.C:1334
 msgid "Shift-Y"
 msgstr "Mayús-Y"
 
 msgid "Shift-Y"
 msgstr "Mayús-Y"
 
-#: cinelerra/mainmenu.C:1344 cinelerra/swindow.C:461
+#: cinelerra/mainmenu.C:1348 cinelerra/swindow.C:461
 msgid "paste subttl"
 msgstr "pegar SUBTTL"
 
 msgid "paste subttl"
 msgstr "pegar SUBTTL"
 
-#: cinelerra/mainmenu.C:1358
+#: cinelerra/mainmenu.C:1362
 msgid "Toggle background rendering"
 msgstr "Alternar renderizado de fondo"
 
 msgid "Toggle background rendering"
 msgstr "Alternar renderizado de fondo"
 
-#: cinelerra/mainmenu.C:1358
+#: cinelerra/mainmenu.C:1362
 msgid "Shift-G"
 msgstr "Mayús-G"
 
 msgid "Shift-G"
 msgstr "Mayús-G"
 
-#: cinelerra/mainmenu.C:1376
+#: cinelerra/mainmenu.C:1380
 msgid "Edit labels"
 msgstr "Editar etiquetas"
 
 msgid "Edit labels"
 msgstr "Editar etiquetas"
 
-#: cinelerra/mainmenu.C:1393
+#: cinelerra/mainmenu.C:1397
 msgid "Edit effects"
 msgstr "Editar efectos"
 
 msgid "Edit effects"
 msgstr "Editar efectos"
 
-#: cinelerra/mainmenu.C:1410
+#: cinelerra/mainmenu.C:1414
 msgid "Keyframes follow edits"
 msgstr "Fotogramas clave siguen las ediciones"
 
 msgid "Keyframes follow edits"
 msgstr "Fotogramas clave siguen las ediciones"
 
-#: cinelerra/mainmenu.C:1425
+#: cinelerra/mainmenu.C:1429
 msgid "Align cursor on frames"
 msgstr "Alinear el cursor a los fotogramas"
 
 msgid "Align cursor on frames"
 msgstr "Alinear el cursor a los fotogramas"
 
-#: cinelerra/mainmenu.C:1425
+#: cinelerra/mainmenu.C:1429
 msgid "Ctrl-a"
 msgstr "Ctrl-a"
 
 msgid "Ctrl-a"
 msgstr "Ctrl-a"
 
-#: cinelerra/mainmenu.C:1441
+#: cinelerra/mainmenu.C:1445
 msgid "Typeless keyframes"
 msgid "Typeless keyframes"
-msgstr "fotogramas clave sin tipo"
+msgstr "Fotogramas clave sin tipo"
 
 
-#: cinelerra/mainmenu.C:1456 cinelerra/mainmenu.C:1466
+#: cinelerra/mainmenu.C:1460 cinelerra/mainmenu.C:1470
 msgid "Slow Shuttle"
 msgstr "Trasladar lento"
 
 msgid "Slow Shuttle"
 msgstr "Trasladar lento"
 
-#: cinelerra/mainmenu.C:1471
+#: cinelerra/mainmenu.C:1475
 msgid "Fast Shuttle"
 msgstr "Trasladar Fast"
 
 msgid "Fast Shuttle"
 msgstr "Trasladar Fast"
 
-#: cinelerra/mainmenu.C:1477
+#: cinelerra/mainmenu.C:1481
 msgid "Save settings now"
 msgstr "Guardar preferencias ahora"
 
 msgid "Save settings now"
 msgstr "Guardar preferencias ahora"
 
-#: cinelerra/mainmenu.C:1477
+#: cinelerra/mainmenu.C:1481
 msgid "Ctrl-s"
 msgstr "Ctrl-s"
 
 msgid "Ctrl-s"
 msgstr "Ctrl-s"
 
-#: cinelerra/mainmenu.C:1487
+#: cinelerra/mainmenu.C:1491
 msgid "Saved settings."
 msgstr "Preferencias guardadas."
 
 msgid "Saved settings."
 msgstr "Preferencias guardadas."
 
-#: cinelerra/mainmenu.C:1500
+#: cinelerra/mainmenu.C:1504
 msgid "Show Viewer"
 msgstr "Mostrar Visor"
 
 msgid "Show Viewer"
 msgstr "Mostrar Visor"
 
-#: cinelerra/mainmenu.C:1512
+#: cinelerra/mainmenu.C:1516
 msgid "Show Resources"
 msgstr "Mostrar Recursos"
 
 msgid "Show Resources"
 msgstr "Mostrar Recursos"
 
-#: cinelerra/mainmenu.C:1524
+#: cinelerra/mainmenu.C:1528
 msgid "Show Compositor"
 msgstr "Mostrar Compositor"
 
 msgid "Show Compositor"
 msgstr "Mostrar Compositor"
 
-#: cinelerra/mainmenu.C:1537
+#: cinelerra/mainmenu.C:1541
 msgid "Show Overlays"
 msgstr "Mostrar Superposiciones"
 
 msgid "Show Overlays"
 msgstr "Mostrar Superposiciones"
 
-#: cinelerra/mainmenu.C:1537
+#: cinelerra/mainmenu.C:1541
 msgid "Ctrl-0"
 msgstr "Ctrl-0"
 
 msgid "Ctrl-0"
 msgstr "Ctrl-0"
 
-#: cinelerra/mainmenu.C:1557
+#: cinelerra/mainmenu.C:1561
 msgid "Show Levels"
 msgstr "Mostrar Niveles"
 
 msgid "Show Levels"
 msgstr "Mostrar Niveles"
 
-#: cinelerra/mainmenu.C:1590
+#: cinelerra/mainmenu.C:1594
 msgid "Split X pane"
 msgstr "Dividir hoja X"
 
 msgid "Split X pane"
 msgstr "Dividir hoja X"
 
-#: cinelerra/mainmenu.C:1590
+#: cinelerra/mainmenu.C:1594
 msgid "Ctrl-1"
 msgstr "Ctrl-1"
 
 msgid "Ctrl-1"
 msgstr "Ctrl-1"
 
-#: cinelerra/mainmenu.C:1604
+#: cinelerra/mainmenu.C:1608
 msgid "Split Y pane"
 msgstr "Dividir hoja Y"
 
 msgid "Split Y pane"
 msgstr "Dividir hoja Y"
 
-#: cinelerra/mainmenu.C:1604
+#: cinelerra/mainmenu.C:1608
 msgid "Ctrl-2"
 msgstr "Ctrl-2"
 
 msgid "Ctrl-2"
 msgstr "Ctrl-2"
 
-#: cinelerra/mainmenu.C:1619
+#: cinelerra/mainmenu.C:1623
 msgid "Mixers..."
 msgstr "Mezcladores..."
 
 msgid "Mixers..."
 msgstr "Mezcladores..."
 
-#: cinelerra/mainmenu.C:1634
+#: cinelerra/mainmenu.C:1638
 msgid "Mixer Viewer"
 msgstr "Visor de mezcladores"
 
 msgid "Mixer Viewer"
 msgstr "Visor de mezcladores"
 
-#: cinelerra/mainmenu.C:1647
+#: cinelerra/mainmenu.C:1651
 msgid "Tile mixers"
 msgstr "Mezcladores de mosaico"
 
 msgid "Tile mixers"
 msgstr "Mezcladores de mosaico"
 
-#: cinelerra/mainmenu.C:1660
+#: cinelerra/mainmenu.C:1664
 msgid "Align mixers"
 msgstr "Alinear mezcladores"
 
 msgid "Align mixers"
 msgstr "Alinear mezcladores"
 
-#: cinelerra/mainmenu.C:1681
+#: cinelerra/mainmenu.C:1685
 #, c-format
 msgid "Ctrl-Shift+F%d"
 msgstr "Ctrl-Mayús+F%d"
 
 #, c-format
 msgid "Ctrl-Shift+F%d"
 msgstr "Ctrl-Mayús+F%d"
 
-#: cinelerra/mainmenu.C:1726 cinelerra/mainmenu.C:1772
+#: cinelerra/mainmenu.C:1730 cinelerra/mainmenu.C:1776
 #, c-format
 msgid "Layout %d"
 msgstr "Diseño %d"
 
 #, c-format
 msgid "Layout %d"
 msgstr "Diseño %d"
 
-#: cinelerra/mainmenu.C:1860
+#: cinelerra/mainmenu.C:1864
 msgid ": Layout"
 msgstr ": Diseño"
 
 msgid ": Layout"
 msgstr ": Diseño"
 
-#: cinelerra/mainmenu.C:1879
+#: cinelerra/mainmenu.C:1883
 msgid "Layout Name:"
 msgstr "Nombre de diseño:"
 
 msgid "Layout Name:"
 msgstr "Nombre de diseño:"
 
-#: cinelerra/mainmenu.C:1888
+#: cinelerra/mainmenu.C:1892
 #, c-format
 msgid "a-z,A-Z,0-9_ only, %dch max"
 msgstr "a-z,A-Z,0-9_ solo, %dch max"
 
 #, c-format
 msgid "a-z,A-Z,0-9_ only, %dch max"
 msgstr "a-z,A-Z,0-9_ solo, %dch max"
 
-#: cinelerra/mainmenu.C:1944
+#: cinelerra/mainmenu.C:1948
 msgid "Load Recent..."
 msgstr "Cargar recientes..."
 
 msgid "Load Recent..."
 msgstr "Cargar recientes..."
 
@@ -6273,7 +6477,8 @@ msgstr "Cargar recientes..."
 msgid "%s ETA: %s"
 msgstr "%s tiempo estimado: %s"
 
 msgid "%s ETA: %s"
 msgstr "%s tiempo estimado: %s"
 
-#: cinelerra/mainsession.C:637 cinelerra/mwindowedit.C:2150
+#: cinelerra/mainsession.C:641 cinelerra/mwindow.C:3980
+#: cinelerra/mwindowedit.C:2155
 #, c-format
 msgid "Clip %d"
 msgstr "Clip %d"
 #, c-format
 msgid "Clip %d"
 msgstr "Clip %d"
@@ -6289,7 +6494,7 @@ msgstr "hora  min    seg     mseg"
 #: cinelerra/mediadb.C:838
 #, c-format
 msgid " find timeline frame_id(%d) failed\n"
 #: cinelerra/mediadb.C:838
 #, c-format
 msgid " find timeline frame_id(%d) failed\n"
-msgstr "Encontrar frame_id línea de tiempo (%d) fracasado\n"
+msgstr " encontrar frame_id línea de tiempo (%d) fracasado\n"
 
 #: cinelerra/menuattacheffect.C:29
 msgid "Attach Effect..."
 
 #: cinelerra/menuattacheffect.C:29
 msgid "Attach Effect..."
@@ -6301,7 +6506,7 @@ msgstr "Adjuntar Efecto"
 
 #: cinelerra/menuattachtransition.C:40
 msgid "Attach Transition..."
 
 #: cinelerra/menuattachtransition.C:40
 msgid "Attach Transition..."
-msgstr "Adjuntar Transición ..."
+msgstr "Adjuntar Transición..."
 
 #: cinelerra/menuattachtransition.C:123
 msgid "Attach Transition"
 
 #: cinelerra/menuattachtransition.C:123
 msgid "Attach Transition"
@@ -6317,7 +6522,7 @@ msgstr "Seleccionar transición de la lista"
 
 #: cinelerra/menueditlength.C:31
 msgid "Edit Length..."
 
 #: cinelerra/menueditlength.C:31
 msgid "Edit Length..."
-msgstr "Editar Longitud ..."
+msgstr "Editar Duración..."
 
 #: cinelerra/menueditlength.C:52
 msgid "Shuffle Edits"
 
 #: cinelerra/menueditlength.C:52
 msgid "Shuffle Edits"
@@ -6338,7 +6543,7 @@ msgstr "Renderizar efecto ..."
 #: cinelerra/menueffects.C:147
 #, c-format
 msgid "No recordable tracks specified."
 #: cinelerra/menueffects.C:147
 #, c-format
 msgid "No recordable tracks specified."
-msgstr "No se han especificado pistas modificables"
+msgstr "No se han especificado pistas modificables."
 
 #: cinelerra/menueffects.C:158
 #, c-format
 
 #: cinelerra/menueffects.C:158
 #, c-format
@@ -6357,7 +6562,7 @@ msgstr "Sin efecto seleccionado."
 msgid "No selected range to process."
 msgstr "No se ha seleccionado un rango para procesar."
 
 msgid "No selected range to process."
 msgstr "No se ha seleccionado un rango para procesar."
 
-#: cinelerra/menueffects.C:312 cinelerra/mwindowgui.C:499
+#: cinelerra/menueffects.C:312 cinelerra/mwindowgui.C:527
 #: cinelerra/vwindowgui.C:146
 #, c-format
 msgid ": %s"
 #: cinelerra/vwindowgui.C:146
 #, c-format
 msgid ": %s"
@@ -6377,13 +6582,13 @@ msgstr ": Renderizar efecto"
 msgid "Select an effect"
 msgstr "Seleccione un efecto"
 
 msgid "Select an effect"
 msgstr "Seleccione un efecto"
 
-#: cinelerra/menueffects.C:619 cinelerra/render.C:1019 cinelerra/render.C:1209
+#: cinelerra/menueffects.C:619 cinelerra/render.C:1020 cinelerra/render.C:1212
 msgid "Select the first file to render to:"
 msgid "Select the first file to render to:"
-msgstr "Seleccione el primer archivo que renderizar a:"
+msgstr "Indique el lugar y nombre del primer archivo a exportar:"
 
 
-#: cinelerra/menueffects.C:620 cinelerra/render.C:1020 cinelerra/render.C:1210
+#: cinelerra/menueffects.C:620 cinelerra/render.C:1021 cinelerra/render.C:1213
 msgid "Select a file to render to:"
 msgid "Select a file to render to:"
-msgstr "Seleccione un archivo para renderizar a:"
+msgstr "Indique el lugar y nombre del archivo a exportar:"
 
 #: cinelerra/menueffects.C:732
 msgid "Set up effect panel and hit \"OK\""
 
 #: cinelerra/menueffects.C:732
 msgid "Set up effect panel and hit \"OK\""
@@ -6395,7 +6600,7 @@ msgstr ": Effect Prompt"
 
 #: cinelerra/menutransitionlength.C:32
 msgid "Transition Length..."
 
 #: cinelerra/menutransitionlength.C:32
 msgid "Transition Length..."
-msgstr "Transición Longitud ..."
+msgstr "Duración de la Transición..."
 
 #: cinelerra/messages.C:69 cinelerra/messages.C:85 cinelerra/messages.C:106
 #, c-format
 
 #: cinelerra/messages.C:69 cinelerra/messages.C:85 cinelerra/messages.C:106
 #, c-format
@@ -6416,7 +6621,7 @@ msgid "Show meters"
 msgstr "Mostrar metros"
 
 #: cinelerra/mixersalign.C:73 cinelerra/mixersalign.C:261
 msgstr "Mostrar metros"
 
 #: cinelerra/mixersalign.C:73 cinelerra/mixersalign.C:261
-#: cinelerra/patchgui.C:664
+#: cinelerra/patchgui.C:665
 msgid "Nudge"
 msgstr "Empujar"
 
 msgid "Nudge"
 msgstr "Empujar"
 
@@ -6455,10 +6660,12 @@ msgstr "pos"
 #: plugins/brightness/brightnesswindow.C:168 plugins/chromakey/chromakey.C:272
 #: plugins/chromakeyhsv/chromakey.C:479 plugins/color3way/color3waywindow.C:649
 #: plugins/colorbalance/colorbalancewindow.C:230
 #: plugins/brightness/brightnesswindow.C:168 plugins/chromakey/chromakey.C:272
 #: plugins/chromakeyhsv/chromakey.C:479 plugins/color3way/color3waywindow.C:649
 #: plugins/colorbalance/colorbalancewindow.C:230
+#: plugins/compressor/compressor.C:706
+#: plugins/compressormulti/comprmultigui.C:640
 #: plugins/crikey/crikeywindow.C:634 plugins/crop/cropwin.C:506
 #: plugins/descratch/descratch.C:497 plugins/descratch/descratch.C:722
 #: plugins/findobj/findobjwindow.C:300 plugins/gamma/gammawindow.C:317
 #: plugins/crikey/crikeywindow.C:634 plugins/crop/cropwin.C:506
 #: plugins/descratch/descratch.C:497 plugins/descratch/descratch.C:722
 #: plugins/findobj/findobjwindow.C:300 plugins/gamma/gammawindow.C:317
-#: plugins/gradient/gradient.C:451 plugins/graphic/graphic.C:681
+#: plugins/gradient/gradient.C:451 plugins/graphic/graphic.C:651
 #: plugins/histogram/histogramwindow.C:624
 #: plugins/histogram_bezier/bistogramwindow.C:540
 #: plugins/huesaturation/huesaturation.C:188 plugins/lens/lens.C:421
 #: plugins/histogram/histogramwindow.C:624
 #: plugins/histogram_bezier/bistogramwindow.C:540
 #: plugins/huesaturation/huesaturation.C:188 plugins/lens/lens.C:421
@@ -6470,8 +6677,8 @@ msgstr "pos"
 #: plugins/rgbshift/rgbshift.C:115 plugins/rotate/rotate.C:244
 #: plugins/rumbler/rumbler.C:154 plugins/sharpen/sharpenwindow.C:167
 #: plugins/shiftinterlace/shiftinterlace.C:188
 #: plugins/rgbshift/rgbshift.C:115 plugins/rotate/rotate.C:244
 #: plugins/rumbler/rumbler.C:154 plugins/sharpen/sharpenwindow.C:167
 #: plugins/shiftinterlace/shiftinterlace.C:188
-#: plugins/sketcher/sketcherwindow.C:1269
-#: plugins/sketcher/sketcherwindow.C:1289
+#: plugins/sketcher/sketcherwindow.C:1358
+#: plugins/sketcher/sketcherwindow.C:1378
 #: plugins/swapchannels/swapchannels.C:184 plugins/swapframes/swapframes.C:165
 #: plugins/tracer/tracerwindow.C:636 plugins/translate/translatewin.C:164
 #: plugins/unsharp/unsharpwindow.C:138 plugins/wave/wave.C:215
 #: plugins/swapchannels/swapchannels.C:184 plugins/swapframes/swapframes.C:165
 #: plugins/tracer/tracerwindow.C:636 plugins/translate/translatewin.C:164
 #: plugins/unsharp/unsharpwindow.C:138 plugins/wave/wave.C:215
@@ -6517,15 +6724,15 @@ msgstr "Mezcladores:"
 
 #: cinelerra/mixersalign.C:537
 msgid "Master Track:"
 
 #: cinelerra/mixersalign.C:537
 msgid "Master Track:"
-msgstr "Pista maestra"
+msgstr "Pista maestra:"
 
 #: cinelerra/mixersalign.C:539
 msgid "Audio Tracks:"
 
 #: cinelerra/mixersalign.C:539
 msgid "Audio Tracks:"
-msgstr "Pistas de audio"
+msgstr "Pistas de audio:"
 
 #: cinelerra/mixersalign.C:870
 msgid "align mixers"
 
 #: cinelerra/mixersalign.C:870
 msgid "align mixers"
-msgstr "Alinear mezcaldores"
+msgstr "alinear mezcaldores"
 
 #: cinelerra/mixersalign.C:1260
 msgid "scan master track empty"
 
 #: cinelerra/mixersalign.C:1260
 msgid "scan master track empty"
@@ -6538,7 +6745,7 @@ msgstr "Ajustar mezcladores hecho: %0.3f secs"
 
 #: cinelerra/mixersalign.C:1550
 msgid "match mixer audio"
 
 #: cinelerra/mixersalign.C:1550
 msgid "match mixer audio"
-msgstr "Ajustar mezcaldores de audio"
+msgstr "ajustar mezcaldores de audio"
 
 #: cinelerra/mixersalign.C:1620
 msgid "master audio track empty"
 
 #: cinelerra/mixersalign.C:1620
 msgid "master audio track empty"
@@ -6546,20 +6753,20 @@ msgstr "pista principal de audio vacía"
 
 #: cinelerra/mixersalign.C:1626
 msgid "master audio track length > 60 seconds"
 
 #: cinelerra/mixersalign.C:1626
 msgid "master audio track length > 60 seconds"
-msgstr "pista principal de audio > 60 segundos"
+msgstr "longitud pista principal de audio > 60 segundos"
 
 #: cinelerra/mixersalign.C:1660
 msgid "no mixers selected"
 
 #: cinelerra/mixersalign.C:1660
 msgid "no mixers selected"
-msgstr "Ningún mezclador seleccionado"
+msgstr "ningún mezclador seleccionado"
 
 #: cinelerra/mixersalign.C:1674
 #, c-format
 msgid "Render mixer done: %0.3f secs"
 
 #: cinelerra/mixersalign.C:1674
 #, c-format
 msgid "Render mixer done: %0.3f secs"
-msgstr "Renderizado mezcladores hecho_ %0.3f segundos"
+msgstr "Renderizado mezcladores hecho: %0.3f segundos"
 
 #: cinelerra/mixersalign.C:1682 cinelerra/mixersalign.C:1726
 msgid "selection (master) not set"
 
 #: cinelerra/mixersalign.C:1682 cinelerra/mixersalign.C:1726
 msgid "selection (master) not set"
-msgstr "seleccion (maestra) no establecida"
+msgstr "selección (maestra) no establecida"
 
 #: cinelerra/mixersalign.C:1687
 msgid "in point selection (master start) must be set"
 
 #: cinelerra/mixersalign.C:1687
 msgid "in point selection (master start) must be set"
@@ -6585,90 +6792,90 @@ msgstr "ajuste de selección de mezclador cancelado"
 msgid "Error in match render."
 msgstr "Error en ajuste de renderizado."
 
 msgid "Error in match render."
 msgstr "Error en ajuste de renderizado."
 
-#: cinelerra/mwindow.C:634
+#: cinelerra/mwindow.C:646
 #, c-format
 msgid "MWindow::init_plugins: can't open plugin index: %s\n"
 msgstr "MWindow::init_plugins: no se abrir el índice del complemento: %s\n"
 
 #, c-format
 msgid "MWindow::init_plugins: can't open plugin index: %s\n"
 msgstr "MWindow::init_plugins: no se abrir el índice del complemento: %s\n"
 
-#: cinelerra/mwindow.C:656
+#: cinelerra/mwindow.C:668
 #, c-format
 msgid "MWindow::init_plugins: can't %s plugin index: %s\n"
 msgstr "MWindow::init_plugins: no se puede %s el índice del complemento: %s\n"
 
 #, c-format
 msgid "MWindow::init_plugins: can't %s plugin index: %s\n"
 msgstr "MWindow::init_plugins: no se puede %s el índice del complemento: %s\n"
 
-#: cinelerra/mwindow.C:658 cinelerra/mwindow.C:706
+#: cinelerra/mwindow.C:670 cinelerra/mwindow.C:718
 msgid "create"
 msgstr "crear"
 
 msgid "create"
 msgstr "crear"
 
-#: cinelerra/mwindow.C:687
+#: cinelerra/mwindow.C:699
 #, c-format
 msgid "MWindow::init_ladspa_plugins: can't open ladspa plugin index: %s\n"
 msgstr "MWindow::init_ladspa_index: no se puede abrir el índice del complemento ladspa: %s\n"
 
 #, c-format
 msgid "MWindow::init_ladspa_plugins: can't open ladspa plugin index: %s\n"
 msgstr "MWindow::init_ladspa_index: no se puede abrir el índice del complemento ladspa: %s\n"
 
-#: cinelerra/mwindow.C:704
+#: cinelerra/mwindow.C:716
 #, c-format
 msgid "MWindow::init_ladspa_plugins: can't %s ladspa plugin index: %s\n"
 msgstr "MWindow::init_ladspa_index: no se puede %s el índice del complemento ladspa: %s\n"
 
 #, c-format
 msgid "MWindow::init_ladspa_plugins: can't %s ladspa plugin index: %s\n"
 msgstr "MWindow::init_ladspa_index: no se puede %s el índice del complemento ladspa: %s\n"
 
-#: cinelerra/mwindow.C:1085
+#: cinelerra/mwindow.C:1097
 #, c-format
 msgid "MWindow::init_theme: prefered theme %s not found.\n"
 msgstr "MWindow::init_theme: tema preferido %s no encontrado\n"
 
 #, c-format
 msgid "MWindow::init_theme: prefered theme %s not found.\n"
 msgstr "MWindow::init_theme: tema preferido %s no encontrado\n"
 
-#: cinelerra/mwindow.C:1090
+#: cinelerra/mwindow.C:1102
 #, c-format
 msgid "MWindow::init_theme: trying default theme %s\n"
 msgstr "MWindow::init_theme: tratar el tema por defecto %s\n"
 
 #, c-format
 msgid "MWindow::init_theme: trying default theme %s\n"
 msgstr "MWindow::init_theme: tratar el tema por defecto %s\n"
 
-#: cinelerra/mwindow.C:1100
+#: cinelerra/mwindow.C:1112
 #, c-format
 msgid "MWindow::init_theme: theme_plugin not found.\n"
 msgstr "MWindow::init_theme: no se encontró theme_plugin\n"
 
 #, c-format
 msgid "MWindow::init_theme: theme_plugin not found.\n"
 msgstr "MWindow::init_theme: no se encontró theme_plugin\n"
 
-#: cinelerra/mwindow.C:1106
+#: cinelerra/mwindow.C:1118
 #, c-format
 msgid "MWindow::init_theme: unable to load theme %s\n"
 msgstr "MWindow::init_theme: no puede cargar el tema %s\n"
 
 #, c-format
 msgid "MWindow::init_theme: unable to load theme %s\n"
 msgstr "MWindow::init_theme: no puede cargar el tema %s\n"
 
-#: cinelerra/mwindow.C:1346 cinelerra/zwindow.C:265
+#: cinelerra/mwindow.C:1357 cinelerra/zwindow.C:275
 #, c-format
 msgid "Mixer %d"
 msgstr "Mezclador %d"
 
 #, c-format
 msgid "Mixer %d"
 msgstr "Mezclador %d"
 
-#: cinelerra/mwindow.C:1392
+#: cinelerra/mwindow.C:1403
 msgid "create mixers"
 msgstr "crear mezcladores"
 
 msgid "create mixers"
 msgstr "crear mezcladores"
 
-#: cinelerra/mwindow.C:1740
+#: cinelerra/mwindow.C:1769
 msgid "multiple video tracks"
 msgstr "múltiples pistas de vídeo"
 
 msgid "multiple video tracks"
 msgstr "múltiples pistas de vídeo"
 
-#: cinelerra/mwindow.C:1752
+#: cinelerra/mwindow.C:1781
 msgid "crosses edits"
 msgstr "cruza ediciones"
 
 msgid "crosses edits"
 msgstr "cruza ediciones"
 
-#: cinelerra/mwindow.C:1754
+#: cinelerra/mwindow.C:1783
 msgid "not asset"
 msgstr "no es un recurso"
 
 msgid "not asset"
 msgstr "no es un recurso"
 
-#: cinelerra/mwindow.C:1773
+#: cinelerra/mwindow.C:1802
 msgid "no file"
 msgstr "ningún archivo"
 
 msgid "no file"
 msgstr "ningún archivo"
 
-#: cinelerra/mwindow.C:1779
+#: cinelerra/mwindow.C:1808
 msgid "db failed"
 msgstr "db fracasado"
 
 msgid "db failed"
 msgstr "db fracasado"
 
-#: cinelerra/mwindow.C:1783
+#: cinelerra/mwindow.C:1812
 #, c-format
 msgid "put_commercial: %s"
 msgstr "put_commercial: %s"
 
 #, c-format
 msgid "put_commercial: %s"
 msgstr "put_commercial: %s"
 
-#: cinelerra/mwindow.C:1870
+#: cinelerra/mwindow.C:1975
 #, c-format
 msgid "Loading %s"
 msgstr "Cargando %s"
 
 #, c-format
 msgid "Loading %s"
 msgstr "Cargando %s"
 
-#: cinelerra/mwindow.C:1883
+#: cinelerra/mwindow.C:1987
 #, c-format
 msgid ""
 "%s's resolution is %dx%d.\n"
 #, c-format
 msgid ""
 "%s's resolution is %dx%d.\n"
@@ -6678,7 +6885,7 @@ msgstr ""
 "\n"
 "Es posible que las imágenes con dimensiones impares no se decodifiquen correctamente."
 
 "\n"
 "Es posible que las imágenes con dimensiones impares no se decodifiquen correctamente."
 
-#: cinelerra/mwindow.C:1892
+#: cinelerra/mwindow.C:1994
 #, c-format
 msgid ""
 "%s's index was built for program number %d\n"
 #, c-format
 msgid ""
 "%s's index was built for program number %d\n"
@@ -6689,16 +6896,16 @@ msgstr ""
 "Preferencias de reproducción es %d.\n"
 "  Usando programa %d."
 
 "Preferencias de reproducción es %d.\n"
 "  Usando programa %d."
 
-#: cinelerra/mwindow.C:1928
+#: cinelerra/mwindow.C:2028 cinelerra/mwindow.C:2029
 #, c-format
 msgid "Failed to open %s"
 msgstr "Fracaso al abrir %s"
 
 #, c-format
 msgid "Failed to open %s"
 msgstr "Fracaso al abrir %s"
 
-#: cinelerra/mwindow.C:1962
+#: cinelerra/mwindow.C:2070
 msgid "'s format couldn't be determined."
 msgstr "el formato 's no se pudo determinar."
 
 msgid "'s format couldn't be determined."
 msgstr "el formato 's no se pudo determinar."
 
-#: cinelerra/mwindow.C:2022
+#: cinelerra/mwindow.C:2121
 #, c-format
 msgid ""
 "XML file %s\n"
 #, c-format
 msgid ""
 "XML file %s\n"
@@ -6707,12 +6914,12 @@ msgstr ""
 "Archivo XML %s\n"
 " no es de cinelerra."
 
 "Archivo XML %s\n"
 " no es de cinelerra."
 
-#: cinelerra/mwindow.C:2024
+#: cinelerra/mwindow.C:2123
 #, c-format
 msgid "Unknown %s"
 #, c-format
 msgid "Unknown %s"
-msgstr " %s desconocido"
+msgstr "Desconocido %s"
 
 
-#: cinelerra/mwindow.C:2034
+#: cinelerra/mwindow.C:2130
 #, c-format
 msgid ""
 "Warning: XML from cinelerra version %s\n"
 #, c-format
 msgid ""
 "Warning: XML from cinelerra version %s\n"
@@ -6721,27 +6928,36 @@ msgstr ""
 "Cuidado: XML de la versión %s de cinelerra\n"
 "Datos de la sesión pueden ser incompatibles."
 
 "Cuidado: XML de la versión %s de cinelerra\n"
 "Datos de la sesión pueden ser incompatibles."
 
-#: cinelerra/mwindow.C:2232
+#: cinelerra/mwindow.C:2187
+#, c-format
+msgid ""
+"Error: Unable to load xml:\n"
+"  %s"
+msgstr ""
+"Error: No se puede cargar el xml:\n"
+"  %s"
+
+#: cinelerra/mwindow.C:2337
 msgid "load"
 msgstr "cargar"
 
 msgid "load"
 msgstr "cargar"
 
-#: cinelerra/mwindow.C:2344 cinelerra/mwindow.C:2459
+#: cinelerra/mwindow.C:2457 cinelerra/mwindow.C:2572
 msgid "proxy"
 msgstr "proxy"
 
 msgid "proxy"
 msgstr "proxy"
 
-#: cinelerra/mwindow.C:2486 cinelerra/mwindow.C:2501
+#: cinelerra/mwindow.C:2595 cinelerra/mwindow.C:2610
 #, c-format
 msgid ""
 "The %s '%s' in file '%s' is not part of your installation of Cinelerra.\n"
 "The project won't be rendered as it was meant and Cinelerra might crash.\n"
 msgstr "El %s '%s' en el archivo '%s' no es parte de la instalación de Cinelerra.  NLa proyecto no se rindió ya que estaba destinado y Cinelerra puede bloquearse.\n"
 
 #, c-format
 msgid ""
 "The %s '%s' in file '%s' is not part of your installation of Cinelerra.\n"
 "The project won't be rendered as it was meant and Cinelerra might crash.\n"
 msgstr "El %s '%s' en el archivo '%s' no es parte de la instalación de Cinelerra.  NLa proyecto no se rindió ya que estaba destinado y Cinelerra puede bloquearse.\n"
 
-#: cinelerra/mwindow.C:2529
+#: cinelerra/mwindow.C:2638
 #, c-format
 msgid "MWindow::init_shm: couldn't open %s for reading.\n"
 msgstr "MWindow::init_shm: no se pudo abrir %s para lectura.\n"
 
 #, c-format
 msgid "MWindow::init_shm: couldn't open %s for reading.\n"
 msgstr "MWindow::init_shm: no se pudo abrir %s para lectura.\n"
 
-#: cinelerra/mwindow.C:2536
+#: cinelerra/mwindow.C:2645
 #, c-format
 msgid ""
 "MWindow::init_shm: %s is %p.\n"
 #, c-format
 msgid ""
 "MWindow::init_shm: %s is %p.\n"
@@ -6756,58 +6972,89 @@ msgstr ""
 "antes de intentar iniciar cinelerra.\n"
 "Debería ser al menos 0x%jx para Cinelerra.\n"
 
 "antes de intentar iniciar cinelerra.\n"
 "Debería ser al menos 0x%jx para Cinelerra.\n"
 
-#: cinelerra/mwindow.C:2567
+#: cinelerra/mwindow.C:2676
 msgid "Initializing Plugins"
 msgstr "Iniciando Plugins"
 
 msgid "Initializing Plugins"
 msgstr "Iniciando Plugins"
 
-#: cinelerra/mwindow.C:2574
+#: cinelerra/mwindow.C:2683
 msgid "Initializing GUI"
 msgstr "Iniciando GUI"
 
 msgid "Initializing GUI"
 msgstr "Iniciando GUI"
 
-#: cinelerra/mwindow.C:2582
+#: cinelerra/mwindow.C:2691
 msgid "Initializing Fonts"
 msgstr "Iniciando Fuentes"
 
 msgid "Initializing Fonts"
 msgstr "Iniciando Fuentes"
 
-#: cinelerra/mwindow.C:3756
+#: cinelerra/mwindow.C:3921
+msgid "open edl"
+msgstr "abrir edl"
+
+#: cinelerra/mwindow.C:3930
+#, c-format
+msgid "Warning: Asset not updated: %s"
+msgstr "Advertencia: activo no actualizado: %s"
+
+#: cinelerra/mwindow.C:3950
+#, c-format
+msgid "Nested_%02d%02d%02d-%02d%02d%02d_"
+msgstr "Anidado_%02d%02d%02d-%02d%02d%02d_"
+
+#: cinelerra/mwindow.C:3961
+msgid "clip2media"
+msgstr "clip2deMedios"
+
+#: cinelerra/mwindow.C:3991
+#, c-format
+msgid "From: %s"
+msgstr "Desde: %s"
+
+#: cinelerra/mwindow.C:3993
+msgid "media2clip"
+msgstr "medios2clip"
+
+#: cinelerra/mwindow.C:4007 cinelerra/mwindow.C:4019
+msgid "reference"
+msgstr "referencia"
+
+#: cinelerra/mwindow.C:4122
 #, c-format
 msgid "Couldn't open %s for writing."
 msgstr "No se pudo abrir %s para la escritura."
 
 #, c-format
 msgid "Couldn't open %s for writing."
 msgstr "No se pudo abrir %s para la escritura."
 
-#: cinelerra/mwindow.C:3788
-msgid "perpetual session"
-msgstr "sesión perpetua"
+#: cinelerra/mwindow.C:4175
+msgid "perpetual load"
+msgstr "carga perpetua"
 
 
-#: cinelerra/mwindow.C:3823
+#: cinelerra/mwindow.C:4201
 #, c-format
 msgid "Copying: %s\n"
 msgstr "Copiando: %s\n"
 
 #, c-format
 msgid "Copying: %s\n"
 msgstr "Copiando: %s\n"
 
-#: cinelerra/mwindow.C:3910
+#: cinelerra/mwindow.C:4288
 #, c-format
 msgid "Saving to %s:\n"
 msgstr "Guardando a: %s\n"
 
 #, c-format
 msgid "Saving to %s:\n"
 msgstr "Guardando a: %s\n"
 
-#: cinelerra/mwindow.C:3969 cinelerra/savefile.C:95 cinelerra/savefile.C:202
+#: cinelerra/mwindow.C:4350 cinelerra/savefile.C:95 cinelerra/savefile.C:202
 #, c-format
 msgid "\"%s\" %dC written"
 msgstr "\"%s\" %dC escrito"
 
 #, c-format
 msgid "\"%s\" %dC written"
 msgstr "\"%s\" %dC escrito"
 
-#: cinelerra/mwindow.C:3976 cinelerra/savefile.C:190
+#: cinelerra/mwindow.C:4357 cinelerra/savefile.C:190
 #, c-format
 msgid "Couldn't open %s."
 msgstr "No se pudo abrir %s."
 
 #, c-format
 msgid "Couldn't open %s."
 msgstr "No se pudo abrir %s."
 
-#: cinelerra/mwindow.C:4126
+#: cinelerra/mwindow.C:4532
 msgid "remove assets"
 msgstr "eliminar clips"
 
 msgid "remove assets"
 msgstr "eliminar clips"
 
-#: cinelerra/mwindow.C:4353
+#: cinelerra/mwindow.C:4757
 #, c-format
 msgid "Using %s"
 msgstr "Utilizando %s"
 
 #, c-format
 msgid "Using %s"
 msgstr "Utilizando %s"
 
-#: cinelerra/mwindow.C:4490 cinelerra/mwindowedit.C:192
-#: cinelerra/mwindowedit.C:239 cinelerra/preferencesthread.C:285
+#: cinelerra/mwindow.C:4894 cinelerra/mwindowedit.C:193
+#: cinelerra/mwindowedit.C:240 cinelerra/preferencesthread.C:288
 msgid ""
 "This project's dimensions are not multiples of 4 so\n"
 "it can't be rendered by OpenGL."
 msgid ""
 "This project's dimensions are not multiples of 4 so\n"
 "it can't be rendered by OpenGL."
@@ -6815,284 +7062,296 @@ msgstr ""
 "Las dimensiones de este proyecto no son múltiplos de 4 por lo\n"
 " cual no puede ser renderizado con OpenGL."
 
 "Las dimensiones de este proyecto no son múltiplos de 4 por lo\n"
 " cual no puede ser renderizado con OpenGL."
 
-#: cinelerra/mwindow.C:4607
+#: cinelerra/mwindow.C:5011
 msgid "select asset"
 msgstr "selecionar clip"
 
 msgid "select asset"
 msgstr "selecionar clip"
 
-#: cinelerra/mwindowedit.C:89 cinelerra/mwindowedit.C:101
-#: cinelerra/mwindowedit.C:115
+#: cinelerra/mwindowedit.C:90 cinelerra/mwindowedit.C:102
+#: cinelerra/mwindowedit.C:116
 msgid "add track"
 msgid "add track"
-msgstr "Añadir pista"
+msgstr "añadir pista"
 
 
-#: cinelerra/mwindowedit.C:213
+#: cinelerra/mwindowedit.C:214
 msgid "asset to all"
 msgstr "clip a todo"
 
 msgid "asset to all"
 msgstr "clip a todo"
 
-#: cinelerra/mwindowedit.C:253
+#: cinelerra/mwindowedit.C:254
 msgid "asset to size"
 msgstr "clip a tamaño"
 
 msgid "asset to size"
 msgstr "clip a tamaño"
 
-#: cinelerra/mwindowedit.C:273
+#: cinelerra/mwindowedit.C:274
 msgid "asset to rate"
 msgstr "clip a calidad"
 
 msgid "asset to rate"
 msgstr "clip a calidad"
 
-#: cinelerra/mwindowedit.C:288
+#: cinelerra/mwindowedit.C:289
 msgid "clear"
 msgid "clear"
-msgstr "limpiar"
+msgstr "eliminar"
 
 
-#: cinelerra/mwindowedit.C:353
+#: cinelerra/mwindowedit.C:354
 msgid "clear keyframes"
 msgid "clear keyframes"
-msgstr "limpiar keyframes"
+msgstr "eliminar keyframes"
 
 
-#: cinelerra/mwindowedit.C:366
+#: cinelerra/mwindowedit.C:367
 msgid "clear default keyframe"
 msgid "clear default keyframe"
-msgstr "limpiar el fotograma clave por defecto"
+msgstr "eliminar el fotograma clave por defecto"
 
 
-#: cinelerra/mwindowedit.C:378
+#: cinelerra/mwindowedit.C:379
 msgid "clear labels"
 msgid "clear labels"
-msgstr "limpiar etiquetas"
+msgstr "eliminar etiquetas"
 
 
-#: cinelerra/mwindowedit.C:402
+#: cinelerra/mwindowedit.C:403
 msgid "clear hard edges"
 msgstr "limpie bordes duros"
 
 msgid "clear hard edges"
 msgstr "limpie bordes duros"
 
-#: cinelerra/mwindowedit.C:430
+#: cinelerra/mwindowedit.C:431
 msgid "concatenate tracks"
 msgstr "concatenar pistas"
 
 msgid "concatenate tracks"
 msgstr "concatenar pistas"
 
-#: cinelerra/mwindowedit.C:568
+#: cinelerra/mwindowedit.C:569
 msgid "crop"
 msgstr "recortar"
 
 msgid "crop"
 msgstr "recortar"
 
-#: cinelerra/mwindowedit.C:591
+#: cinelerra/mwindowedit.C:592
 msgid "blade"
 msgstr "cuchilla"
 
 msgid "blade"
 msgstr "cuchilla"
 
-#: cinelerra/mwindowedit.C:611
+#: cinelerra/mwindowedit.C:612
 msgid "split | cut"
 msgstr "dividir | cortar"
 
 msgid "split | cut"
 msgstr "dividir | cortar"
 
-#: cinelerra/mwindowedit.C:669
+#: cinelerra/mwindowedit.C:670
 msgid "cut keyframes"
 msgstr "cortar fotogramas clave"
 
 msgid "cut keyframes"
 msgstr "cortar fotogramas clave"
 
-#: cinelerra/mwindowedit.C:685
+#: cinelerra/mwindowedit.C:686
 msgid "cut default keyframe"
 msgid "cut default keyframe"
-msgstr "cortar fotograma clave por defecto "
+msgstr "cortar fotograma clave por defecto"
 
 
-#: cinelerra/mwindowedit.C:697
+#: cinelerra/mwindowedit.C:698
 msgid "delete tracks"
 msgstr "borrar pistas"
 
 msgid "delete tracks"
 msgstr "borrar pistas"
 
-#: cinelerra/mwindowedit.C:711
+#: cinelerra/mwindowedit.C:712
 msgid "delete track"
 msgstr "eliminar pista"
 
 msgid "delete track"
 msgstr "eliminar pista"
 
-#: cinelerra/mwindowedit.C:779 cinelerra/mwindowedit.C:808
+#: cinelerra/mwindowedit.C:780 cinelerra/mwindowedit.C:809
 msgid "insert effect"
 msgstr "insertar efecto"
 
 msgid "insert effect"
 msgstr "insertar efecto"
 
-#: cinelerra/mwindowedit.C:930
+#: cinelerra/mwindowedit.C:931
 msgid "drag handle"
 msgid "drag handle"
-msgstr "gestiona arrastrar "
+msgstr "gestiona arrastrar"
 
 
-#: cinelerra/mwindowedit.C:948
+#: cinelerra/mwindowedit.C:949
 msgid "match output size"
 msgstr "ajusta a la dimensión de la salida"
 
 msgid "match output size"
 msgstr "ajusta a la dimensión de la salida"
 
-#: cinelerra/mwindowedit.C:983
+#: cinelerra/mwindowedit.C:984
 msgid "del edit"
 msgstr "eliminar edición"
 
 msgid "del edit"
 msgstr "eliminar edición"
 
-#: cinelerra/mwindowedit.C:993
+#: cinelerra/mwindowedit.C:994
 msgid "cut edit"
 msgstr "cortar edición"
 
 msgid "cut edit"
 msgstr "cortar edición"
 
-#: cinelerra/mwindowedit.C:1012
+#: cinelerra/mwindowedit.C:1013
 msgid "move edit"
 msgstr "mover el recorte"
 
 msgid "move edit"
 msgstr "mover el recorte"
 
-#: cinelerra/mwindowedit.C:1054
+#: cinelerra/mwindowedit.C:1055
 msgid "paste clip"
 msgstr "pegar clip"
 
 msgid "paste clip"
 msgstr "pegar clip"
 
-#: cinelerra/mwindowedit.C:1086
+#: cinelerra/mwindowedit.C:1087
 msgid "move group"
 msgstr "mover grupo"
 
 msgid "move group"
 msgstr "mover grupo"
 
-#: cinelerra/mwindowedit.C:1099
+#: cinelerra/mwindowedit.C:1100
 msgid "paste effect"
 msgstr "pegar efecto"
 
 msgid "paste effect"
 msgstr "pegar efecto"
 
-#: cinelerra/mwindowedit.C:1112
+#: cinelerra/mwindowedit.C:1113
 msgid "move effect"
 msgstr "mover efecto"
 
 msgid "move effect"
 msgstr "mover efecto"
 
-#: cinelerra/mwindowedit.C:1127
+#: cinelerra/mwindowedit.C:1128
 msgid "move effect up"
 msgstr "mover efecto arriba"
 
 msgid "move effect up"
 msgstr "mover efecto arriba"
 
-#: cinelerra/mwindowedit.C:1140
+#: cinelerra/mwindowedit.C:1141
 msgid "move effect down"
 msgstr "mover efecto abajo"
 
 msgid "move effect down"
 msgstr "mover efecto abajo"
 
-#: cinelerra/mwindowedit.C:1151
+#: cinelerra/mwindowedit.C:1152
 msgid "move track down"
 msgstr "mover la pista abajo"
 
 msgid "move track down"
 msgstr "mover la pista abajo"
 
-#: cinelerra/mwindowedit.C:1164
+#: cinelerra/mwindowedit.C:1165
 msgid "move tracks down"
 msgstr "mover las pistas abajo"
 
 msgid "move tracks down"
 msgstr "mover las pistas abajo"
 
-#: cinelerra/mwindowedit.C:1177
+#: cinelerra/mwindowedit.C:1178
 msgid "move track up"
 msgid "move track up"
-msgstr "Mover la pista arriba"
+msgstr "mover la pista arriba"
 
 
-#: cinelerra/mwindowedit.C:1189
+#: cinelerra/mwindowedit.C:1190
 msgid "move tracks up"
 msgid "move tracks up"
-msgstr "Mover las pistas arriba"
+msgstr "mover las pistas arriba"
 
 
-#: cinelerra/mwindowedit.C:1261
+#: cinelerra/mwindowedit.C:1268
 msgid "overwrite"
 msgstr "sobrescribir"
 
 msgid "overwrite"
 msgstr "sobrescribir"
 
-#: cinelerra/mwindowedit.C:1314
+#: cinelerra/mwindowedit.C:1321
 msgid "paste"
 msgstr "pegar"
 
 msgid "paste"
 msgstr "pegar"
 
-#: cinelerra/mwindowedit.C:1351
+#: cinelerra/mwindowedit.C:1358
 msgid "paste assets"
 msgstr "pegar clips"
 
 msgid "paste assets"
 msgstr "pegar clips"
 
-#: cinelerra/mwindowedit.C:1427
+#: cinelerra/mwindowedit.C:1434
 msgid "paste keyframes"
 msgstr "pegar fotogramas clave"
 
 msgid "paste keyframes"
 msgstr "pegar fotogramas clave"
 
-#: cinelerra/mwindowedit.C:1453
+#: cinelerra/mwindowedit.C:1460
 msgid "paste default keyframe"
 msgid "paste default keyframe"
-msgstr "Pegar fotogramas clave por defecto"
+msgstr "pegar fotogramas clave por defecto"
 
 
-#: cinelerra/mwindowedit.C:1761 cinelerra/mwindowedit.C:1768
+#: cinelerra/mwindowedit.C:1766 cinelerra/mwindowedit.C:1773
 msgid "silence"
 msgstr "silencio"
 
 msgid "silence"
 msgstr "silencio"
 
-#: cinelerra/mwindowedit.C:1784
+#: cinelerra/mwindowedit.C:1789
 msgid "detach transition"
 msgstr "quitar transición"
 
 msgid "detach transition"
 msgstr "quitar transición"
 
-#: cinelerra/mwindowedit.C:1801
+#: cinelerra/mwindowedit.C:1806
 msgid "detach transitions"
 msgstr "quitar transiciones"
 
 msgid "detach transitions"
 msgstr "quitar transiciones"
 
-#: cinelerra/mwindowedit.C:1816 cinelerra/mwindowedit.C:1844
-#: cinelerra/mwindowedit.C:1864 cinelerra/mwindowedit.C:1885
+#: cinelerra/mwindowedit.C:1821 cinelerra/mwindowedit.C:1849
+#: cinelerra/mwindowedit.C:1869 cinelerra/mwindowedit.C:1890
 msgid "transition"
 msgstr "transición"
 
 msgid "transition"
 msgstr "transición"
 
-#: cinelerra/mwindowedit.C:1831
+#: cinelerra/mwindowedit.C:1836
 msgid "attach transitions"
 msgstr "adjuntar transiciones"
 
 msgid "attach transitions"
 msgstr "adjuntar transiciones"
 
-#: cinelerra/mwindowedit.C:1856 cinelerra/mwindowedit.C:1876
+#: cinelerra/mwindowedit.C:1861 cinelerra/mwindowedit.C:1881
 #, c-format
 msgid "No default transition %s found."
 msgstr "No se encontró ninguna transición %s predeterminada."
 
 #, c-format
 msgid "No default transition %s found."
 msgstr "No se encontró ninguna transición %s predeterminada."
 
-#: cinelerra/mwindowedit.C:1903
+#: cinelerra/mwindowedit.C:1908
 msgid "shuffle edits"
 msgstr "mezclar ediciones"
 
 msgid "shuffle edits"
 msgstr "mezclar ediciones"
 
-#: cinelerra/mwindowedit.C:1922
+#: cinelerra/mwindowedit.C:1927
 msgid "reverse edits"
 msgstr "ediciones inverso"
 
 msgid "reverse edits"
 msgstr "ediciones inverso"
 
-#: cinelerra/mwindowedit.C:1941
+#: cinelerra/mwindowedit.C:1946
 msgid "align edits"
 msgstr "alinear ediciones"
 
 msgid "align edits"
 msgstr "alinear ediciones"
 
-#: cinelerra/mwindowedit.C:1960
+#: cinelerra/mwindowedit.C:1965
 msgid "edit length"
 msgstr "edita la longitud"
 
 msgid "edit length"
 msgstr "edita la longitud"
 
-#: cinelerra/mwindowedit.C:1980 cinelerra/mwindowedit.C:1999
+#: cinelerra/mwindowedit.C:1985 cinelerra/mwindowedit.C:2004
 msgid "transition length"
 msgstr "longitud de transición"
 
 msgid "transition length"
 msgstr "longitud de transición"
 
-#: cinelerra/mwindowedit.C:2063
+#: cinelerra/mwindowedit.C:2068
 msgid "resize track"
 msgstr "cambiar el tamaño de la pista"
 
 msgid "resize track"
 msgstr "cambiar el tamaño de la pista"
 
-#: cinelerra/mwindowedit.C:2076
+#: cinelerra/mwindowedit.C:2081
 msgid "in point"
 msgstr "punto de entrada"
 
 msgid "in point"
 msgstr "punto de entrada"
 
-#: cinelerra/mwindowedit.C:2089
+#: cinelerra/mwindowedit.C:2094
 msgid "out point"
 msgstr "punto de salida"
 
 msgid "out point"
 msgstr "punto de salida"
 
-#: cinelerra/mwindowedit.C:2102
+#: cinelerra/mwindowedit.C:2107
 msgid "clear in/out"
 msgid "clear in/out"
-msgstr "limpiar entrada/salida"
+msgstr "eliminar entrada/salida"
 
 
-#: cinelerra/mwindowedit.C:2139
+#: cinelerra/mwindowedit.C:2144
 msgid "splice"
 msgstr "empalmar"
 
 msgid "splice"
 msgstr "empalmar"
 
-#: cinelerra/mwindowedit.C:2258
+#: cinelerra/mwindowedit.C:2259
 msgid "label"
 msgstr "etiqueta"
 
 msgid "label"
 msgstr "etiqueta"
 
-#: cinelerra/mwindowedit.C:2274
+#: cinelerra/mwindowedit.C:2275
 msgid "trim selection"
 msgstr "eliminar selección"
 
 msgid "trim selection"
 msgstr "eliminar selección"
 
-#: cinelerra/mwindowedit.C:2333
+#: cinelerra/mwindowedit.C:2334
 msgid "create new folder failed"
 msgstr "fallo crear nueva carpeta"
 
 msgid "create new folder failed"
 msgstr "fallo crear nueva carpeta"
 
-#: cinelerra/mwindowedit.C:2335
+#: cinelerra/mwindowedit.C:2336
 msgid "new folder"
 msgstr "nueva carpeta"
 
 msgid "new folder"
 msgstr "nueva carpeta"
 
-#: cinelerra/mwindowedit.C:2343
+#: cinelerra/mwindowedit.C:2344
 msgid "delete folder failed"
 msgstr "falla eliminar carpeta"
 
 msgid "delete folder failed"
 msgstr "falla eliminar carpeta"
 
-#: cinelerra/mwindowedit.C:2345
+#: cinelerra/mwindowedit.C:2346
 msgid "del folder"
 msgstr "eliminar carpeta"
 
 msgid "del folder"
 msgstr "eliminar carpeta"
 
-#: cinelerra/mwindowedit.C:2381
+#: cinelerra/mwindowedit.C:2382
 msgid "map 1:1"
 msgstr "mapa 1:1"
 
 msgid "map 1:1"
 msgstr "mapa 1:1"
 
-#: cinelerra/mwindowedit.C:2381
+#: cinelerra/mwindowedit.C:2382
 msgid "map 5.1:2"
 msgstr "mapa 5.1:2"
 
 msgid "map 5.1:2"
 msgstr "mapa 5.1:2"
 
-#: cinelerra/mwindowedit.C:2453
+#: cinelerra/mwindowedit.C:2459
+msgid "convert assets format error"
+msgstr "error de formato de conversión de activos"
+
+#: cinelerra/mwindowedit.C:2461
+msgid "No convertable assets found"
+msgstr "Activos no convertibles encontrados"
+
+#: cinelerra/mwindowedit.C:2476
+msgid "convert"
+msgstr "convertir"
+
+#: cinelerra/mwindowedit.C:2493
 msgid "cut ads"
 msgstr "cortar anuncios"
 
 msgid "cut ads"
 msgstr "cortar anuncios"
 
-#: cinelerra/mwindowgui.C:82
+#: cinelerra/mwindowgui.C:85
 msgid ": Program"
 msgstr ": Programa"
 
 msgid ": Program"
 msgstr ": Programa"
 
-#: cinelerra/mwindowgui.C:2296
+#: cinelerra/mwindowgui.C:2338
 msgid "Changing the base codecs may require rebuilding indexes."
 msgstr "Changing the base codecs may require rebuilding indexes."
 
 msgid "Changing the base codecs may require rebuilding indexes."
 msgstr "Changing the base codecs may require rebuilding indexes."
 
-#: cinelerra/mwindowgui.C:2311 cinelerra/mwindowgui.C:2345
+#: cinelerra/mwindowgui.C:2377 cinelerra/mwindowgui.C:2411
 msgid "Disable proxy"
 msgstr "Desactivar proxy"
 
 msgid "Disable proxy"
 msgstr "Desactivar proxy"
 
-#: cinelerra/mwindowgui.C:2311 cinelerra/mwindowgui.C:2345
+#: cinelerra/mwindowgui.C:2377 cinelerra/mwindowgui.C:2411
 msgid "Enable proxy"
 msgstr "Activar proxy"
 
 #: cinelerra/mwindow.inc:59
 msgid "Cinelerra: Asset Info"
 msgid "Enable proxy"
 msgstr "Activar proxy"
 
 #: cinelerra/mwindow.inc:59
 msgid "Cinelerra: Asset Info"
-msgstr "Cinelerra: Activos Info"
+msgstr "Cinelerra: Información del archivo"
 
 #: cinelerra/mwindow.inc:60
 msgid "Cinelerra: Asset path"
 
 #: cinelerra/mwindow.inc:60
 msgid "Cinelerra: Asset path"
@@ -7200,7 +7459,7 @@ msgstr "Cinelerra: Editar canal"
 
 #: cinelerra/mwindow.inc:86
 msgid "Cinelerra: Edit length"
 
 #: cinelerra/mwindow.inc:86
 msgid "Cinelerra: Edit length"
-msgstr "Cinelerra: Editar longitud"
+msgstr "Cinelerra: Editar duración"
 
 #: cinelerra/mwindow.inc:87
 msgid "Cinelerra: Effect Prompt"
 
 #: cinelerra/mwindow.inc:87
 msgid "Cinelerra: Effect Prompt"
@@ -7236,11 +7495,11 @@ msgstr "Cinelerra: El archivo existe"
 
 #: cinelerra/mwindow.inc:95
 msgid "Cinelerra: File format"
 
 #: cinelerra/mwindow.inc:95
 msgid "Cinelerra: File format"
-msgstr "Cinelerra: Formato de archivo"
+msgstr "Cinelerra: Formato del archivo"
 
 #: cinelerra/mwindow.inc:96
 msgid "Cinelerra: File Format"
 
 #: cinelerra/mwindow.inc:96
 msgid "Cinelerra: File Format"
-msgstr "Cinelerra: Formato de archivo"
+msgstr "Cinelerra: Formato del Archivo"
 
 #: cinelerra/mwindow.inc:97
 msgid "Cinelerra: Goto position"
 
 #: cinelerra/mwindow.inc:97
 msgid "Cinelerra: Goto position"
@@ -7521,7 +7780,9 @@ msgstr ": Agregar al proyecto"
 msgid ""
 "Cannot create and access project path:\n"
 "%s"
 msgid ""
 "Cannot create and access project path:\n"
 "%s"
-msgstr "No se puede crear y acceder a la ruta del proyecto: %s"
+msgstr ""
+"No se puede crear y acceder a la ruta del proyecto: \n"
+"%s"
 
 #: cinelerra/new.C:333
 msgid "Parameters for the new project:"
 
 #: cinelerra/new.C:333
 msgid "Parameters for the new project:"
@@ -7541,7 +7802,7 @@ msgstr "Velocidad de muestreo:"
 
 #: cinelerra/new.C:394 cinelerra/recordgui.C:246
 msgid "Framerate:"
 
 #: cinelerra/new.C:394 cinelerra/recordgui.C:246
 msgid "Framerate:"
-msgstr "Fotograma por segundos:"
+msgstr "Fotogramas x seg:"
 
 #: cinelerra/new.C:418 cinelerra/setformat.C:360
 msgid "Canvas size:"
 
 #: cinelerra/new.C:418 cinelerra/setformat.C:360
 msgid "Canvas size:"
@@ -7569,7 +7830,7 @@ msgstr "Directorio del Proyecto"
 
 #: cinelerra/new.C:476
 msgid "Project Directory Path:"
 
 #: cinelerra/new.C:476
 msgid "Project Directory Path:"
-msgstr "Rutal del directorio del Proyecto"
+msgstr "Rutal del Directorio del Proyecto:"
 
 #: cinelerra/new.C:478
 msgid "Project Name:"
 
 #: cinelerra/new.C:478
 msgid "Project Name:"
@@ -7580,7 +7841,7 @@ msgid "Auto aspect ratio"
 msgstr "Relación de aspecto Automatica"
 
 #: cinelerra/new.C:945 cinelerra/resizetrackthread.C:189
 msgstr "Relación de aspecto Automatica"
 
 #: cinelerra/new.C:945 cinelerra/resizetrackthread.C:189
-#: cinelerra/setformat.C:827 plugins/photoscale/photoscale.C:198
+#: cinelerra/setformat.C:822 plugins/photoscale/photoscale.C:198
 msgid "Swap dimensions"
 msgstr "Intercambiar dimensiones"
 
 msgid "Swap dimensions"
 msgstr "Intercambiar dimensiones"
 
@@ -7600,43 +7861,43 @@ msgstr "reproducir parche"
 msgid "Arm track"
 msgstr "Activar pista"
 
 msgid "Arm track"
 msgstr "Activar pista"
 
-#: cinelerra/patchgui.C:399
+#: cinelerra/patchgui.C:400
 msgid "record patch"
 msgid "record patch"
-msgstr "registrar parche "
+msgstr "parchear la grabación"
 
 
-#: cinelerra/patchgui.C:426
+#: cinelerra/patchgui.C:427
 msgid "Gang faders"
 msgid "Gang faders"
-msgstr "Junta difuminados"
+msgstr "Junta fundidos"
 
 
-#: cinelerra/patchgui.C:451
+#: cinelerra/patchgui.C:452
 msgid "gang patch"
 msgstr "junta parche"
 
 msgid "gang patch"
 msgstr "junta parche"
 
-#: cinelerra/patchgui.C:478
+#: cinelerra/patchgui.C:479
 msgid "Draw media"
 msgstr "Dibujar medios"
 
 msgid "Draw media"
 msgstr "Dibujar medios"
 
-#: cinelerra/patchgui.C:503
+#: cinelerra/patchgui.C:504
 msgid "draw patch"
 msgstr "dibujar parche"
 
 msgid "draw patch"
 msgstr "dibujar parche"
 
-#: cinelerra/patchgui.C:529
+#: cinelerra/patchgui.C:530
 msgid "Don't send to output"
 msgstr "No enviar a la salida"
 
 msgid "Don't send to output"
 msgstr "No enviar a la salida"
 
-#: cinelerra/patchgui.C:569
+#: cinelerra/patchgui.C:570
 msgid "mute patch"
 msgstr "silenciar parche"
 
 msgid "mute patch"
 msgstr "silenciar parche"
 
-#: cinelerra/patchgui.C:615
+#: cinelerra/patchgui.C:616
 msgid "expand patch"
 msgstr "ampliar parche"
 
 msgid "expand patch"
 msgstr "ampliar parche"
 
-#: cinelerra/patchgui.C:642 cinelerra/patchgui.C:646
+#: cinelerra/patchgui.C:643 cinelerra/patchgui.C:647
 msgid "track title"
 msgstr "título della pista"
 
 msgid "track title"
 msgstr "título della pista"
 
-#: cinelerra/patchgui.C:675 cinelerra/patchgui.C:681
+#: cinelerra/patchgui.C:676 cinelerra/patchgui.C:682
 msgid "nudge."
 msgstr "empujar."
 
 msgid "nudge."
 msgstr "empujar."
 
@@ -7654,7 +7915,7 @@ msgstr "Segundos de preroll para renderizados:"
 
 #: cinelerra/performanceprefs.C:98
 msgid "Project SMP cpus:"
 
 #: cinelerra/performanceprefs.C:98
 msgid "Project SMP cpus:"
-msgstr "Proyecto CPUs SMP"
+msgstr "Proyecto CPUs SMP:"
 
 #: cinelerra/performanceprefs.C:113
 msgid "Background Rendering (Video only)"
 
 #: cinelerra/performanceprefs.C:113
 msgid "Background Rendering (Video only)"
@@ -7678,7 +7939,7 @@ msgstr "Granja de Renderizado"
 
 #: cinelerra/performanceprefs.C:155 cinelerra/performanceprefs.C:651
 msgid "Reset rates"
 
 #: cinelerra/performanceprefs.C:155 cinelerra/performanceprefs.C:651
 msgid "Reset rates"
-msgstr "Restablecer tasas"
+msgstr "Restablecer"
 
 #: cinelerra/performanceprefs.C:158
 msgid "Nodes:"
 
 #: cinelerra/performanceprefs.C:158
 msgid "Nodes:"
@@ -7690,7 +7951,7 @@ msgstr "Nombre de host:"
 
 #: cinelerra/performanceprefs.C:176
 msgid "Client Watchdog Timeout:"
 
 #: cinelerra/performanceprefs.C:176
 msgid "Client Watchdog Timeout:"
-msgstr "Final tiempo de vigilancia de cliente"
+msgstr "Final tiempo de vigilancia de cliente:"
 
 #: cinelerra/performanceprefs.C:179
 msgid "Total jobs to create:"
 
 #: cinelerra/performanceprefs.C:179
 msgid "Total jobs to create:"
@@ -7702,12 +7963,13 @@ msgstr "(Anulado si  \"fichero nuevo en cada etiqueta\" está seleccionado)"
 
 #: cinelerra/performanceprefs.C:227 cinelerra/pluginpopup.C:222
 #: cinelerra/recordbatches.C:22 cinelerra/transitionpopup.C:313
 
 #: cinelerra/performanceprefs.C:227 cinelerra/pluginpopup.C:222
 #: cinelerra/recordbatches.C:22 cinelerra/transitionpopup.C:313
+#: plugins/sketcher/sketcherwindow.C:298
 msgid "On"
 msgid "On"
-msgstr "Encendido"
+msgstr "ON"
 
 #: cinelerra/performanceprefs.C:227
 msgid "Hostname"
 
 #: cinelerra/performanceprefs.C:227
 msgid "Hostname"
-msgstr "Nombre de host"
+msgstr "Nombre"
 
 #: cinelerra/performanceprefs.C:227
 msgid "Port"
 
 #: cinelerra/performanceprefs.C:227
 msgid "Port"
@@ -7768,6 +8030,7 @@ msgid "Audio offset (sec):"
 msgstr "Compensación audio (seg):"
 
 #: cinelerra/playbackprefs.C:120 cinelerra/recordprefs.C:155
 msgstr "Compensación audio (seg):"
 
 #: cinelerra/playbackprefs.C:120 cinelerra/recordprefs.C:155
+#: plugins/compressormulti/comprmultigui.C:161
 #: plugins/denoiseseltempavg/seltempavgwindow.C:114
 #: plugins/freeverb/freeverb.C:312 plugins/histeq/histeq.C:103
 msgid "Gain:"
 #: plugins/denoiseseltempavg/seltempavgwindow.C:114
 #: plugins/freeverb/freeverb.C:312 plugins/histeq/histeq.C:103
 msgid "Gain:"
@@ -7783,11 +8046,11 @@ msgstr "Salida de Vídeo"
 
 #: cinelerra/playbackprefs.C:144
 msgid "Framerate achieved:"
 
 #: cinelerra/playbackprefs.C:144
 msgid "Framerate achieved:"
-msgstr "Fotogramas por segundos alcanzado:"
+msgstr "Fotogramas por seg alcanzado:"
 
 #: cinelerra/playbackprefs.C:156
 msgid "Scaling equation: Enlarge / Reduce "
 
 #: cinelerra/playbackprefs.C:156
 msgid "Scaling equation: Enlarge / Reduce "
-msgstr "Ecuación de escalado: Ampliar/Reducir"
+msgstr "Ecuación de escalado: Ampliar/Reducir "
 
 #: cinelerra/playbackprefs.C:165
 msgid "DVD Subtitle to display:"
 
 #: cinelerra/playbackprefs.C:165
 msgid "DVD Subtitle to display:"
@@ -7835,7 +8098,7 @@ msgstr "Activar subtítulos/didascalias"
 
 #: cinelerra/playbackprefs.C:424
 msgid "Label cells"
 
 #: cinelerra/playbackprefs.C:424
 msgid "Label cells"
-msgstr "células Etiqueta"
+msgstr "Etiquetar celdas"
 
 #: cinelerra/playtransport.C:397
 msgid "Fast reverse ( + or Alt-p )"
 
 #: cinelerra/playtransport.C:397
 msgid "Fast reverse ( + or Alt-p )"
@@ -7875,12 +8138,24 @@ msgstr "Autor: %s"
 msgid "License: %s"
 msgstr "Licencia: %s"
 
 msgid "License: %s"
 msgstr "Licencia: %s"
 
-#: cinelerra/pluginarray.C:222
+#: cinelerra/pluginarray.C:224
 #, c-format
 msgid "%s took %s"
 msgstr "%s tomó %s"
 
 #, c-format
 msgid "%s took %s"
 msgstr "%s tomó %s"
 
-#: cinelerra/pluginclient.C:1060 cinelerra/pluginclient.C:1071
+#: cinelerra/plugin.C:223
+msgid "standalone"
+msgstr "autónomo"
+
+#: cinelerra/plugin.C:224
+msgid "shared plugin"
+msgstr "plugin compartido"
+
+#: cinelerra/plugin.C:225
+msgid "shared module"
+msgstr "modulo compartido"
+
+#: cinelerra/pluginclient.C:1085 cinelerra/pluginclient.C:1096
 msgid "tweek"
 msgstr "tweek"
 
 msgid "tweek"
 msgstr "tweek"
 
@@ -7898,7 +8173,7 @@ msgstr "Pistas compartidas:"
 
 #: cinelerra/plugindialog.C:462
 msgid "attach effect"
 
 #: cinelerra/plugindialog.C:462
 msgid "attach effect"
-msgstr "Adjuntar efecto"
+msgstr "adjuntar efecto"
 
 #: cinelerra/plugindialog.C:713
 msgid "Attach single standalone and share others"
 
 #: cinelerra/plugindialog.C:713
 msgid "Attach single standalone and share others"
@@ -7910,15 +8185,15 @@ msgstr "UI"
 
 #: cinelerra/pluginpopup.C:92
 msgid "Change..."
 
 #: cinelerra/pluginpopup.C:92
 msgid "Change..."
-msgstr "Cambiar..."
+msgstr "Cambiar efecto..."
 
 #: cinelerra/pluginpopup.C:108
 msgid ": Change Effect"
 
 #: cinelerra/pluginpopup.C:108
 msgid ": Change Effect"
-msgstr ": Efecto Cambio"
+msgstr ": Cambiar Efecto"
 
 #: cinelerra/pluginpopup.C:122 cinelerra/transitionpopup.C:295
 msgid "Detach"
 
 #: cinelerra/pluginpopup.C:122 cinelerra/transitionpopup.C:295
 msgid "Detach"
-msgstr "Separar"
+msgstr "Quitar"
 
 #: cinelerra/pluginpopup.C:139
 msgid "detach effect"
 
 #: cinelerra/pluginpopup.C:139
 msgid "detach effect"
@@ -7938,7 +8213,7 @@ msgstr "Mostrar"
 
 #: cinelerra/pluginpopup.C:273
 msgid "Presets..."
 
 #: cinelerra/pluginpopup.C:273
 msgid "Presets..."
-msgstr "Presets ..."
+msgstr "Ajustes preestablecidos..."
 
 #: cinelerra/pluginprefs.C:59
 msgid "Plugin Set"
 
 #: cinelerra/pluginprefs.C:59
 msgid "Plugin Set"
@@ -7954,7 +8229,7 @@ msgstr "Ruta Plugin Global"
 
 #: cinelerra/pluginprefs.C:67 cinelerra/pluginprefs.C:77
 msgid "Select the directory for plugins"
 
 #: cinelerra/pluginprefs.C:67 cinelerra/pluginprefs.C:77
 msgid "Select the directory for plugins"
-msgstr "Seleccione el directorio de plugins"
+msgstr "Seleccione la carpeta de plugins"
 
 #: cinelerra/pluginprefs.C:71
 msgid "Look for personal plugins here"
 
 #: cinelerra/pluginprefs.C:71
 msgid "Look for personal plugins here"
@@ -7978,23 +8253,23 @@ msgstr "Encender"
 msgid "Preset Edit"
 msgstr "Editar preestablecidos"
 
 msgid "Preset Edit"
 msgstr "Editar preestablecidos"
 
-#: cinelerra/preferences.C:414
+#: cinelerra/preferences.C:425
 msgid "Current Manual"
 msgstr "Manual Actual"
 
 msgid "Current Manual"
 msgstr "Manual Actual"
 
-#: cinelerra/preferences.C:415
+#: cinelerra/preferences.C:426
 msgid "Setting Shell Commands"
 msgstr "Ajustes de Comandos del Shell"
 
 msgid "Setting Shell Commands"
 msgstr "Ajustes de Comandos del Shell"
 
-#: cinelerra/preferences.C:416
+#: cinelerra/preferences.C:427
 msgid "Shortcuts"
 msgid "Shortcuts"
-msgstr "atajos"
+msgstr "Atajos de teclado"
 
 
-#: cinelerra/preferences.C:417
+#: cinelerra/preferences.C:428
 msgid "RenderMux"
 msgstr "RenderizarMux"
 
 msgid "RenderMux"
 msgstr "RenderizarMux"
 
-#: cinelerra/preferences.inc:33
+#: cinelerra/preferences.inc:36
 msgid ""
 "Currently: Try FFMpeg first\n"
 "   Click to: Try FFMpeg last"
 msgid ""
 "Currently: Try FFMpeg first\n"
 "   Click to: Try FFMpeg last"
@@ -8002,7 +8277,7 @@ msgstr ""
 "Actualmente: Pruebe primero FFMpeg\n"
 "   Clic en: Probar por último FFMpeg"
 
 "Actualmente: Pruebe primero FFMpeg\n"
 "   Clic en: Probar por último FFMpeg"
 
-#: cinelerra/preferences.inc:34
+#: cinelerra/preferences.inc:37
 msgid ""
 "Currently: Try FFMpeg last\n"
 "   Click to: Try FFMpeg first"
 msgid ""
 "Currently: Try FFMpeg last\n"
 "   Click to: Try FFMpeg first"
@@ -8018,59 +8293,59 @@ msgstr "Preferencias ..."
 msgid "Shift-P"
 msgstr "Mayús-P"
 
 msgid "Shift-P"
 msgstr "Mayús-P"
 
-#: cinelerra/preferencesthread.C:372 cinelerra/render.C:863
+#: cinelerra/preferencesthread.C:375 cinelerra/render.C:863
 msgid "render"
 msgstr "renderizar"
 
 msgid "render"
 msgstr "renderizar"
 
-#: cinelerra/preferencesthread.C:375 cinelerra/record.C:432
+#: cinelerra/preferencesthread.C:378 cinelerra/record.C:439
 msgid "record"
 msgstr "grabar"
 
 msgid "record"
 msgstr "grabar"
 
-#: cinelerra/preferencesthread.C:386
+#: cinelerra/preferencesthread.C:389
 msgid "*Playback A"
 msgstr "* La reproducción A"
 
 msgid "*Playback A"
 msgstr "* La reproducción A"
 
-#: cinelerra/preferencesthread.C:386
+#: cinelerra/preferencesthread.C:389
 msgid "Playback A"
 msgstr "Reproducción A"
 
 msgid "Playback A"
 msgstr "Reproducción A"
 
-#: cinelerra/preferencesthread.C:389
+#: cinelerra/preferencesthread.C:392
 msgid "*Playback B"
 msgstr "* La reproducción B"
 
 msgid "*Playback B"
 msgstr "* La reproducción B"
 
-#: cinelerra/preferencesthread.C:389
+#: cinelerra/preferencesthread.C:392
 msgid "Playback B"
 msgstr "Reproducción B"
 
 msgid "Playback B"
 msgstr "Reproducción B"
 
-#: cinelerra/preferencesthread.C:391
+#: cinelerra/preferencesthread.C:394
 msgid "Recording"
 msgstr "Grabación"
 
 msgid "Recording"
 msgstr "Grabación"
 
-#: cinelerra/preferencesthread.C:393
+#: cinelerra/preferencesthread.C:396
 msgid "Performance"
 msgstr "Performance"
 
 msgid "Performance"
 msgstr "Performance"
 
-#: cinelerra/preferencesthread.C:395
+#: cinelerra/preferencesthread.C:398
 msgid "Interface"
 msgstr "Interfaz"
 
 msgid "Interface"
 msgstr "Interfaz"
 
-#: cinelerra/preferencesthread.C:397
+#: cinelerra/preferencesthread.C:400
 msgid "Appearance"
 msgstr "Apariencia"
 
 msgid "Appearance"
 msgstr "Apariencia"
 
-#: cinelerra/preferencesthread.C:399
+#: cinelerra/preferencesthread.C:402
 msgid "About"
 msgstr "Acerca de"
 
 msgid "About"
 msgstr "Acerca de"
 
-#: cinelerra/preferencesthread.C:424
+#: cinelerra/preferencesthread.C:427
 msgid ": Preferences"
 msgstr "Preferencias"
 
 msgid ": Preferences"
 msgstr "Preferencias"
 
-#: cinelerra/preferencesthread.C:687
+#: cinelerra/preferencesthread.C:690
 msgid "restart"
 msgstr "reiniciar"
 
 msgid "restart"
 msgstr "reiniciar"
 
-#: cinelerra/preferencesthread.C:706
+#: cinelerra/preferencesthread.C:709
 #, c-format
 msgid "Busy: %s in progress. Are you sure?"
 msgstr "Ocupado: %s en progreso. ¿Está seguro?"
 #, c-format
 msgid "Busy: %s in progress. Are you sure?"
 msgstr "Ocupado: %s en progreso. ¿Está seguro?"
@@ -8080,7 +8355,7 @@ msgid ": Probes"
 msgstr ": Sondear"
 
 #: cinelerra/probeprefs.C:137 plugins/crikey/crikeywindow.C:522
 msgstr ": Sondear"
 
 #: cinelerra/probeprefs.C:137 plugins/crikey/crikeywindow.C:522
-#: plugins/sketcher/sketcherwindow.C:885 plugins/sketcher/sketcherwindow.C:1116
+#: plugins/sketcher/sketcherwindow.C:974 plugins/sketcher/sketcherwindow.C:1205
 #: plugins/tracer/tracerwindow.C:479
 msgid "Up"
 msgstr "Arriba"
 #: plugins/tracer/tracerwindow.C:479
 msgid "Up"
 msgstr "Arriba"
@@ -8101,38 +8376,47 @@ msgstr "Alt-r"
 msgid "Original size"
 msgstr "Tamaño original"
 
 msgid "Original size"
 msgstr "Tamaño original"
 
-#: cinelerra/proxy.C:338
+#: cinelerra/proxy.C:170
+msgid "Specified format does not render video"
+msgstr "El formato especificado no es valido para video"
+
+#: cinelerra/proxy.C:286
+#, c-format
+msgid "bad proxy path: %s\n"
+msgstr "ruta de proxy incorrecta: %s\n"
+
+#: cinelerra/proxy.C:363
 msgid "Creating proxy files..."
 msgid "Creating proxy files..."
-msgstr "Creando archivos proxy"
+msgstr "Creando archivos proxy..."
 
 
-#: cinelerra/proxy.C:357
+#: cinelerra/proxy.C:376
+msgid "Error making proxy."
+msgstr "Error al crear el proxy."
+
+#: cinelerra/proxy.C:383
 msgid ": Proxy settings"
 msgstr ": Ajustes de Proxy"
 
 msgid ": Proxy settings"
 msgstr ": Ajustes de Proxy"
 
-#: cinelerra/proxy.C:396 plugins/reframe/reframe.C:190
+#: cinelerra/proxy.C:423 plugins/reframe/reframe.C:190
 #: plugins/resample/resample.C:84
 msgid "Scale factor:"
 msgstr "Factor de escala:"
 
 #: plugins/resample/resample.C:84
 msgid "Scale factor:"
 msgstr "Factor de escala:"
 
-#: cinelerra/proxy.C:409
+#: cinelerra/proxy.C:436
 msgid "New media dimensions: "
 msgid "New media dimensions: "
-msgstr "Nueva dimensión de Medios:"
+msgstr "Nuevas dimensiones: "
 
 
-#: cinelerra/proxy.C:415
+#: cinelerra/proxy.C:442
 msgid "Active Scale: "
 msgid "Active Scale: "
-msgstr "Escala Activo:"
+msgstr "Activar Escala: "
 
 
-#: cinelerra/proxy.C:473
+#: cinelerra/proxy.C:502
 msgid "Use scaler   (FFMPEG only)"
 msgstr "Usar Escalar (Solo FFMPEG)"
 
 msgid "Use scaler   (FFMPEG only)"
 msgstr "Usar Escalar (Solo FFMPEG)"
 
-#: cinelerra/proxy.C:498
+#: cinelerra/proxy.C:527
 msgid "Auto proxy/scale media loads"
 msgid "Auto proxy/scale media loads"
-msgstr "Cargar medios auto proxy/escalar"
-
-#: cinelerra/proxy.C:521 cinelerra/render.C:1215
-msgid "Beep on done"
-msgstr "Pitido al terminar"
+msgstr "Proxy automático/cargar medios a escala"
 
 #: cinelerra/question.C:34
 msgid ": Question"
 
 #: cinelerra/question.C:34
 msgid ": Question"
@@ -8175,7 +8459,7 @@ msgstr "Ruta"
 msgid "News"
 msgstr "Noticias"
 
 msgid "News"
 msgstr "Noticias"
 
-#: cinelerra/recordbatches.C:505 cinelerra/recordgui.C:949
+#: cinelerra/recordbatches.C:505 cinelerra/recordgui.C:992
 msgid ""
 "Start batch recording\n"
 "from the current position."
 msgid ""
 "Start batch recording\n"
 "from the current position."
@@ -8187,7 +8471,7 @@ msgstr ""
 msgid "Activate"
 msgstr "Activar"
 
 msgid "Activate"
 msgstr "Activar"
 
-#: cinelerra/recordbatches.C:534 cinelerra/recordgui.C:980
+#: cinelerra/recordbatches.C:534 cinelerra/recordgui.C:1023
 msgid ""
 "Make the highlighted\n"
 "clip active."
 msgid ""
 "Make the highlighted\n"
 "clip active."
@@ -8195,15 +8479,15 @@ msgstr ""
 "Hacer que el clip destacado\n"
 "se active."
 
 "Hacer que el clip destacado\n"
 "se active."
 
-#: cinelerra/record.C:85
+#: cinelerra/record.C:87
 msgid "Record..."
 msgstr "Grabar ..."
 
 msgid "Record..."
 msgstr "Grabar ..."
 
-#: cinelerra/record.C:551
+#: cinelerra/record.C:556
 msgid "Deleting"
 msgstr "Eliminación"
 
 msgid "Deleting"
 msgstr "Eliminación"
 
-#: cinelerra/record.C:1203
+#: cinelerra/record.C:1208
 msgid "Running"
 msgstr "Corriendo"
 
 msgid "Running"
 msgstr "Corriendo"
 
@@ -8225,12 +8509,12 @@ msgstr "Hora de inicio:"
 msgid "Duration time:"
 msgstr "Tiempo de duración:"
 
 msgid "Duration time:"
 msgstr "Tiempo de duración:"
 
-#: cinelerra/recordgui.C:169 plugins/audioscope/audioscope.C:401
+#: cinelerra/recordgui.C:169 plugins/audioscope/audioscope.C:395
 #: plugins/denoisemjpeg/denoisemjpeg.C:395 plugins/descratch/descratch.C:510
 #: plugins/echocancel/echocancel.C:451 plugins/findobj/findobjwindow.C:54
 #: plugins/lens/lens.C:537 plugins/overlay/overlay.C:202
 #: plugins/overlayaudio/overlayaudio.C:209
 #: plugins/denoisemjpeg/denoisemjpeg.C:395 plugins/descratch/descratch.C:510
 #: plugins/echocancel/echocancel.C:451 plugins/findobj/findobjwindow.C:54
 #: plugins/lens/lens.C:537 plugins/overlay/overlay.C:202
 #: plugins/overlayaudio/overlayaudio.C:209
-#: plugins/spectrogram/spectrogram.C:433 plugins/spherecam/spherecam.C:410
+#: plugins/spectrogram/spectrogram.C:427 plugins/spherecam/spherecam.C:410
 msgid "Mode:"
 msgstr "Modo:"
 
 msgid "Mode:"
 msgstr "Modo:"
 
@@ -8286,112 +8570,126 @@ msgstr "Lotes:"
 msgid "Cron:"
 msgstr "Cronómetro:"
 
 msgid "Cron:"
 msgstr "Cronómetro:"
 
-#: cinelerra/recordgui.C:352 cinelerra/recordgui.C:985
+#: cinelerra/recordgui.C:352 cinelerra/recordgui.C:1028
 msgid "Idle"
 msgstr "Inactivo"
 
 msgid "Idle"
 msgstr "Inactivo"
 
-#: cinelerra/recordgui.C:568
+#: cinelerra/recordgui.C:392
+msgid "deinterlace"
+msgstr "desentralzado"
+
+#: cinelerra/recordgui.C:574
 msgid "Save the recording and quit."
 msgstr "Guardar la grabación y salir."
 
 msgid "Save the recording and quit."
 msgstr "Guardar la grabación y salir."
 
-#: cinelerra/recordgui.C:591
+#: cinelerra/recordgui.C:597
 msgid "Quit without pasting into project."
 msgstr "Salir sin pegar en el proyecto."
 
 msgid "Quit without pasting into project."
 msgstr "Salir sin pegar en el proyecto."
 
-#: cinelerra/recordgui.C:616
+#: cinelerra/recordgui.C:622
 msgid "Quit and paste into project."
 msgstr "Salir y pegar en el proyecto."
 
 msgid "Quit and paste into project."
 msgstr "Salir y pegar en el proyecto."
 
-#: cinelerra/recordgui.C:628
+#: cinelerra/recordgui.C:634
 msgid "Start Over"
 msgstr "Volver a empezar"
 
 msgid "Start Over"
 msgstr "Volver a empezar"
 
-#: cinelerra/recordgui.C:630
+#: cinelerra/recordgui.C:636
 msgid "Rewind the current file and erase."
 msgstr "Rebobinar el archivo actual y borrar."
 
 msgid "Rewind the current file and erase."
 msgstr "Rebobinar el archivo actual y borrar."
 
-#: cinelerra/recordgui.C:646
+#: cinelerra/recordgui.C:652
 msgid "drop overrun frames"
 msgid "drop overrun frames"
-msgstr "Soltar fotogramas desbordados"
+msgstr "soltar fotogramas desbordados"
 
 
-#: cinelerra/recordgui.C:650
+#: cinelerra/recordgui.C:656
 msgid "Drop input frames when behind."
 msgstr "Deja caer fotogramas de entrada cuando se retrasan."
 
 msgid "Drop input frames when behind."
 msgstr "Deja caer fotogramas de entrada cuando se retrasan."
 
-#: cinelerra/recordgui.C:670
+#: cinelerra/recordgui.C:676
 msgid "fill underrun frames"
 msgstr "rellenar fotogramas empotrados"
 
 msgid "fill underrun frames"
 msgstr "rellenar fotogramas empotrados"
 
-#: cinelerra/recordgui.C:674
+#: cinelerra/recordgui.C:680
 msgid "Write extra frames when behind."
 msgstr "Escribir extra fotogramas cuando se retrasan."
 
 msgid "Write extra frames when behind."
 msgstr "Escribir extra fotogramas cuando se retrasan."
 
-#: cinelerra/recordgui.C:694
+#: cinelerra/recordgui.C:700
 msgid "poweroff when done"
 msgstr "apagar una vez hecho"
 
 msgid "poweroff when done"
 msgstr "apagar una vez hecho"
 
-#: cinelerra/recordgui.C:698
+#: cinelerra/recordgui.C:704
 msgid "poweroff system when batch record done."
 msgstr "apagar el sistema cuando el grabado por lotes finalice."
 
 msgid "poweroff system when batch record done."
 msgstr "apagar el sistema cuando el grabado por lotes finalice."
 
-#: cinelerra/recordgui.C:719
+#: cinelerra/recordgui.C:725
 msgid "check for ads"
 msgstr "comprobar anuncios"
 
 msgid "check for ads"
 msgstr "comprobar anuncios"
 
-#: cinelerra/recordgui.C:723
+#: cinelerra/recordgui.C:729
 msgid "check for commercials."
 msgstr "comprobar anuncios."
 
 msgid "check for commercials."
 msgstr "comprobar anuncios."
 
-#: cinelerra/recordgui.C:746
+#: cinelerra/recordgui.C:773 plugins/piano/piano.C:1384
+#: plugins/synthesizer/synthesizer.C:1920
+msgid "Even"
+msgstr "Par"
+
+#: cinelerra/recordgui.C:774 plugins/piano/piano.C:1407
+#: plugins/synthesizer/synthesizer.C:1944
+msgid "Odd"
+msgstr "Impar"
+
+#: cinelerra/recordgui.C:789
 msgid "Monitor video"
 msgstr "Monitor de vídeo"
 
 msgid "Monitor video"
 msgstr "Monitor de vídeo"
 
-#: cinelerra/recordgui.C:786
+#: cinelerra/recordgui.C:829
 msgid "Monitor audio"
 msgstr "Monitor de audio"
 
 msgid "Monitor audio"
 msgstr "Monitor de audio"
 
-#: cinelerra/recordgui.C:823
+#: cinelerra/recordgui.C:866
 msgid "Audio meters"
 msgstr "Medidores de audio"
 
 msgid "Audio meters"
 msgstr "Medidores de audio"
 
-#: cinelerra/recordgui.C:970
+#: cinelerra/recordgui.C:1013
 msgid "Stopped"
 msgstr "Detenido"
 
 msgid "Stopped"
 msgstr "Detenido"
 
-#: cinelerra/recordgui.C:991
+#: cinelerra/recordgui.C:1034
 msgid "Label"
 msgstr "Etiqueta"
 
 msgid "Label"
 msgstr "Etiqueta"
 
-#: cinelerra/recordgui.C:1019
+#: cinelerra/recordgui.C:1062
 msgid "ClrLbls"
 msgid "ClrLbls"
-msgstr "Limpiar etiquetas"
+msgstr "Eliminar etiquetas"
 
 
-#: cinelerra/recordgui.C:1068
+#: cinelerra/recordgui.C:1111
 msgid "Interrupt recording in progress?"
 msgstr "Interrumpir la grabación en curso?"
 
 msgid "Interrupt recording in progress?"
 msgstr "Interrumpir la grabación en curso?"
 
-#: cinelerra/recordgui.C:1094
+#: cinelerra/recordgui.C:1137
 msgid "Rewind batch and overwrite?"
 msgstr "Rebobinar lote y sobrescribir?"
 
 msgid "Rewind batch and overwrite?"
 msgstr "Rebobinar lote y sobrescribir?"
 
-#: cinelerra/recordmonitor.C:234
+#: cinelerra/recordmonitor.C:235
 msgid ": Video in"
 msgstr ": Video in"
 
 msgid ": Video in"
 msgstr ": Video in"
 
-#: cinelerra/recordmonitor.C:642
+#: cinelerra/recordmonitor.C:643
 #, c-format
 msgid ": Video in %d%%"
 msgstr ": Video in %d%%"
 
 #, c-format
 msgid ": Video in %d%%"
 msgstr ": Video in %d%%"
 
-#: cinelerra/recordmonitor.C:674
+#: cinelerra/recordmonitor.C:675
 msgid "Record cursor"
 msgstr "Grabar cursor"
 
 msgid "Record cursor"
 msgstr "Grabar cursor"
 
-#: cinelerra/recordmonitor.C:691
+#: cinelerra/recordmonitor.C:692
 msgid "Big cursor"
 msgstr "Cursor grande"
 
 msgid "Big cursor"
 msgstr "Cursor grande"
 
-#: cinelerra/recordmonitor.C:747
+#: cinelerra/recordmonitor.C:748
 msgid "Swap fields"
 msgstr "Intercambiar campos"
 
 msgid "Swap fields"
 msgstr "Intercambiar campos"
 
@@ -8401,7 +8699,7 @@ msgstr "Entrada de Audio"
 
 #: cinelerra/recordprefs.C:105 cinelerra/recordprefs.C:175
 msgid "Record Driver:"
 
 #: cinelerra/recordprefs.C:105 cinelerra/recordprefs.C:175
 msgid "Record Driver:"
-msgstr "Controlador de Grabación:"
+msgstr "Controlador:"
 
 #: cinelerra/recordprefs.C:115
 msgid "Samples read from device:"
 
 #: cinelerra/recordprefs.C:115
 msgid "Samples read from device:"
@@ -8622,27 +8920,27 @@ msgstr "No se pudo iniciar granja de render"
 msgid "Error rendering data."
 msgstr "Error al renderizar los datos."
 
 msgid "Error rendering data."
 msgstr "Error al renderizar los datos."
 
-#: cinelerra/render.C:978
+#: cinelerra/render.C:979
 msgid ": Render"
 msgstr ": Renderizar"
 
 msgid ": Render"
 msgstr ": Renderizar"
 
-#: cinelerra/render.C:1028
+#: cinelerra/render.C:1029
 msgid "Render range:"
 msgstr "Render rango:"
 
 msgid "Render range:"
 msgstr "Render rango:"
 
-#: cinelerra/render.C:1103
+#: cinelerra/render.C:1106
 msgid "Project"
 msgstr "Proyecto"
 
 msgid "Project"
 msgstr "Proyecto"
 
-#: cinelerra/render.C:1114
+#: cinelerra/render.C:1117
 msgid "Selection"
 msgid "Selection"
-msgstr "Seleccion"
+msgstr "Selección"
 
 
-#: cinelerra/render.C:1126
+#: cinelerra/render.C:1129
 msgid "In/Out Points"
 msgid "In/Out Points"
-msgstr "Los puntos Entrada/Salida"
+msgstr "Puntos Entrada/Salida"
 
 
-#: cinelerra/render.C:1137
+#: cinelerra/render.C:1140
 msgid "One Frame"
 msgstr "Un fotograma"
 
 msgid "One Frame"
 msgstr "Un fotograma"
 
@@ -8754,11 +9052,11 @@ msgid "Size:"
 msgstr "Tamaño:"
 
 #: cinelerra/resizetrackthread.C:132 cinelerra/resizetrackthread.C:143
 msgstr "Tamaño:"
 
 #: cinelerra/resizetrackthread.C:132 cinelerra/resizetrackthread.C:143
-#: plugins/compressor/compressor.C:886 plugins/scale/scalewin.C:70
+#: plugins/scale/scalewin.C:70
 msgid "x"
 msgstr "x"
 
 msgid "x"
 msgstr "x"
 
-#: cinelerra/resourcepixmap.C:431
+#: cinelerra/resourcepixmap.C:461
 #, c-format
 msgid "ResourcePixmap::draw_audio_source: failed to check out %s for drawing.\n"
 msgstr "ResourcePixmap::draw_audio_source: no se pudo verificar %s para dibujar.\n"
 #, c-format
 msgid "ResourcePixmap::draw_audio_source: failed to check out %s for drawing.\n"
 msgstr "ResourcePixmap::draw_audio_source: no se pudo verificar %s para dibujar.\n"
@@ -8859,8 +9157,8 @@ msgstr "Histograma Parade"
 msgid "Waveform Parade"
 msgstr "Forma de onda Parade"
 
 msgid "Waveform Parade"
 msgstr "Forma de onda Parade"
 
-#: cinelerra/scopewindow.C:1340 plugins/audioscope/audioscope.C:314
-#: plugins/piano/piano.C:528 plugins/synthesizer/synthesizer.C:554
+#: cinelerra/scopewindow.C:1340 plugins/audioscope/audioscope.C:311
+#: plugins/piano/piano.C:528 plugins/synthesizer/synthesizer.C:562
 msgid "Waveform"
 msgstr "Forma de onda"
 
 msgid "Waveform"
 msgstr "Forma de onda"
 
@@ -8888,7 +9186,7 @@ msgstr ": Poner Formado"
 msgid "Channel positions:"
 msgstr "Posiciones del canal:"
 
 msgid "Channel positions:"
 msgstr "Posiciones del canal:"
 
-#: cinelerra/setformat.C:612
+#: cinelerra/setformat.C:607
 #, c-format
 msgid "%d degrees"
 msgstr "%d grados"
 #, c-format
 msgid "%d degrees"
 msgstr "%d grados"
@@ -9067,7 +9365,7 @@ msgstr "arrastrar etiqueta"
 
 #: cinelerra/timeentry.C:51
 msgid "Sun"
 
 #: cinelerra/timeentry.C:51
 msgid "Sun"
-msgstr "Sol"
+msgstr "Dom"
 
 #: cinelerra/timeentry.C:51
 msgid "Mon"
 
 #: cinelerra/timeentry.C:51
 msgid "Mon"
@@ -9100,7 +9398,7 @@ msgid ""
 " %s"
 msgstr ""
 "no existe archivo de consejos:\n"
 " %s"
 msgstr ""
 "no existe archivo de consejos:\n"
-"%s"
+" %s"
 
 #: cinelerra/tipwindow.C:119
 msgid ": Tip of the day"
 
 #: cinelerra/tipwindow.C:119
 msgid ": Tip of the day"
@@ -9118,11 +9416,11 @@ msgstr "Próxima sugerencia"
 msgid "Previous tip"
 msgstr "Sugerencia anterior"
 
 msgid "Previous tip"
 msgstr "Sugerencia anterior"
 
-#: cinelerra/trackcanvas.C:4623
+#: cinelerra/trackcanvas.C:4630
 msgid "keyframe"
 msgstr "fotograma clave"
 
 msgid "keyframe"
 msgstr "fotograma clave"
 
-#: cinelerra/trackcanvas.C:4831
+#: cinelerra/trackcanvas.C:4838
 msgid "hard_edge"
 msgstr "borde_duro"
 
 msgid "hard_edge"
 msgstr "borde_duro"
 
@@ -9148,7 +9446,7 @@ msgstr "Encontrar en recursos"
 
 #: cinelerra/trackpopup.C:270
 msgid "User title..."
 
 #: cinelerra/trackpopup.C:270
 msgid "User title..."
-msgstr "Título de usuario ..."
+msgstr "Título personalizado..."
 
 #: cinelerra/trackpopup.C:355
 msgid ": Set edit title"
 
 #: cinelerra/trackpopup.C:355
 msgid ": Set edit title"
@@ -9162,7 +9460,7 @@ msgstr "Título de usuario:"
 msgid "Bar Color..."
 msgstr "Color de Barra..."
 
 msgid "Bar Color..."
 msgstr "Color de Barra..."
 
-#: cinelerra/trackpopup.C:433 cinelerra/trackpopup.C:459
+#: cinelerra/trackpopup.C:433 cinelerra/trackpopup.C:460
 #: plugins/echocancel/echocancel.C:212 plugins/perspective/perspective.C:607
 msgid "default"
 msgstr "default"
 #: plugins/echocancel/echocancel.C:212 plugins/perspective/perspective.C:607
 msgid "default"
 msgstr "default"
@@ -9171,25 +9469,25 @@ msgstr "default"
 msgid "Bar Color"
 msgstr "Color de barra"
 
 msgid "Bar Color"
 msgstr "Color de barra"
 
-#: cinelerra/trackpopup.C:498
+#: cinelerra/trackpopup.C:500
 msgid "Show edit"
 msgstr "Mostrar edición"
 
 msgid "Show edit"
 msgstr "Mostrar edición"
 
-#: cinelerra/trackpopup.C:553
+#: cinelerra/trackpopup.C:555
 msgid ": Show edit"
 msgstr ": Mostar edición"
 
 msgid ": Show edit"
 msgstr ": Mostar edición"
 
-#: cinelerra/trackpopup.C:572
+#: cinelerra/trackpopup.C:574
 #, c-format
 msgid "Track %d:"
 msgstr "Pista %d:"
 
 #, c-format
 msgid "Track %d:"
 msgstr "Pista %d:"
 
-#: cinelerra/trackpopup.C:579
+#: cinelerra/trackpopup.C:582
 #, c-format
 msgid "Edit %d:"
 #, c-format
 msgid "Edit %d:"
-msgstr "%d:"
+msgstr "Editar %d:"
 
 
-#: cinelerra/trackpopup.C:600
+#: cinelerra/trackpopup.C:603
 #, c-format
 msgid ""
 "StartSource: %s\n"
 #, c-format
 msgid ""
 "StartSource: %s\n"
@@ -9223,7 +9521,7 @@ msgstr ": Longitud de Transición"
 #: cinelerra/transitionpopup.C:270
 #, c-format
 msgid "Length: %2.2f sec"
 #: cinelerra/transitionpopup.C:270
 #, c-format
 msgid "Length: %2.2f sec"
-msgstr "Tiempo: %2.2f segundos"
+msgstr "Tiempo: %2.2f seg"
 
 #: cinelerra/transitionpopup.C:277
 msgid "Attach..."
 
 #: cinelerra/transitionpopup.C:277
 msgid "Attach..."
@@ -9339,11 +9637,11 @@ msgstr "Reemplazar"
 
 #: cinelerra/vpatchgui.C:389
 msgid "Max"
 
 #: cinelerra/vpatchgui.C:389
 msgid "Max"
-msgstr "Max"
+msgstr "Máx"
 
 #: cinelerra/vpatchgui.C:390
 msgid "Min"
 
 #: cinelerra/vpatchgui.C:390
 msgid "Min"
-msgstr "Min"
+msgstr "Mín"
 
 #: cinelerra/vpatchgui.C:391
 msgid "Darken"
 
 #: cinelerra/vpatchgui.C:391
 msgid "Darken"
@@ -9443,7 +9741,7 @@ msgstr "Visor"
 msgid ": Viewer"
 msgstr ": Visor"
 
 msgid ": Viewer"
 msgstr ": Visor"
 
-#: cinelerra/vwindowgui.C:698
+#: cinelerra/vwindowgui.C:694
 msgid "viewer window: "
 msgstr "ventana del visor: "
 
 msgid "viewer window: "
 msgstr "ventana del visor: "
 
@@ -9451,7 +9749,7 @@ msgstr "ventana del visor: "
 msgid ": Warning"
 msgstr ": Advertencia"
 
 msgid ": Warning"
 msgstr ": Advertencia"
 
-#: cinelerra/wwindow.C:98
+#: cinelerra/wwindow.C:99
 msgid "Don't show this warning again."
 msgstr "No mostrar esta advertencia."
 
 msgid "Don't show this warning again."
 msgstr "No mostrar esta advertencia."
 
@@ -9485,11 +9783,11 @@ msgstr "Tipo de automatización"
 
 #: cinelerra/zoombar.C:455
 msgid "Audio Fade:"
 
 #: cinelerra/zoombar.C:455
 msgid "Audio Fade:"
-msgstr "Audio Fade:"
+msgstr "Fundido de Audio:"
 
 #: cinelerra/zoombar.C:456
 msgid "Video Fade:"
 
 #: cinelerra/zoombar.C:456
 msgid "Video Fade:"
-msgstr "Video Fade:"
+msgstr "Fundido de Vídeo:"
 
 #: cinelerra/zoombar.C:457
 msgid "Zoom:"
 
 #: cinelerra/zoombar.C:457
 msgid "Zoom:"
@@ -9497,7 +9795,7 @@ msgstr "Zoom:"
 
 #: cinelerra/zoombar.C:458 plugins/titler/titlerwindow.C:343
 msgid "Speed:"
 
 #: cinelerra/zoombar.C:458 plugins/titler/titlerwindow.C:343
 msgid "Speed:"
-msgstr "Velocitad:"
+msgstr "Velocidad:"
 
 #: cinelerra/zoombar.C:503
 msgid "Automation range"
 
 #: cinelerra/zoombar.C:503
 msgid "Automation range"
@@ -9561,58 +9859,62 @@ msgstr "Hoyo"
 msgid "Dust"
 msgstr "Polvo"
 
 msgid "Dust"
 msgstr "Polvo"
 
-#: plugins/audioscope/audioscope.C:312
+#: plugins/alpha/alpha.C:95
+msgid "Alpha:"
+msgstr "Alfa:"
+
+#: plugins/audioscope/audioscope.C:309
 msgid "XY Mode"
 msgstr "Modo XY"
 
 msgid "XY Mode"
 msgstr "Modo XY"
 
-#: plugins/audioscope/audioscope.C:316
+#: plugins/audioscope/audioscope.C:313
 msgid "Rising Trigger"
 msgstr "Rising Trigger"
 
 msgid "Rising Trigger"
 msgstr "Rising Trigger"
 
-#: plugins/audioscope/audioscope.C:319
+#: plugins/audioscope/audioscope.C:316
 msgid "Falling Trigger"
 msgstr "Falling Trigger"
 
 msgid "Falling Trigger"
 msgstr "Falling Trigger"
 
-#: plugins/audioscope/audioscope.C:373
+#: plugins/audioscope/audioscope.C:367
 msgid "History Size:"
 msgstr "Tamaño Historico:"
 
 msgid "History Size:"
 msgstr "Tamaño Historico:"
 
-#: plugins/audioscope/audioscope.C:383 plugins/pitch/pitch.C:423
+#: plugins/audioscope/audioscope.C:377 plugins/pitch/pitch.C:423
 msgid "Window Size:"
 msgstr "Tamaño de la ventana:"
 
 msgid "Window Size:"
 msgstr "Tamaño de la ventana:"
 
-#: plugins/audioscope/audioscope.C:409
+#: plugins/audioscope/audioscope.C:403
 msgid "Trigger level:"
 msgstr "Nivel de disparo:"
 
 msgid "Trigger level:"
 msgstr "Nivel de disparo:"
 
-#: plugins/audioscope/audioscope.C:417
+#: plugins/audioscope/audioscope.C:411
 msgid "Sample: 0"
 msgstr "Muestra: 0"
 
 msgid "Sample: 0"
 msgstr "Muestra: 0"
 
-#: plugins/audioscope/audioscope.C:419
+#: plugins/audioscope/audioscope.C:413
 msgid "Level 0: 0"
 msgstr "Nivel 0: 0"
 
 msgid "Level 0: 0"
 msgstr "Nivel 0: 0"
 
-#: plugins/audioscope/audioscope.C:421
+#: plugins/audioscope/audioscope.C:415
 msgid "Level 1: 0"
 msgstr "Nivel 1: 0"
 
 msgid "Level 1: 0"
 msgstr "Nivel 1: 0"
 
-#: plugins/audioscope/audioscope.C:577
+#: plugins/audioscope/audioscope.C:571
 #, c-format
 msgid "Sample: %d"
 msgstr "Muestra: %d"
 
 #, c-format
 msgid "Sample: %d"
 msgstr "Muestra: %d"
 
-#: plugins/audioscope/audioscope.C:580
+#: plugins/audioscope/audioscope.C:574
 #, c-format
 msgid "Level 0: %.2f"
 msgstr "Nivel 0: %.2f"
 
 #, c-format
 msgid "Level 0: %.2f"
 msgstr "Nivel 0: %.2f"
 
-#: plugins/audioscope/audioscope.C:583
+#: plugins/audioscope/audioscope.C:577
 #, c-format
 msgid "Level 1: %.2f"
 msgstr "Nivel 1: %.2f"
 
 #, c-format
 msgid "Level 1: %.2f"
 msgstr "Nivel 1: %.2f"
 
-#: plugins/audioscope/audioscope.C:664
+#: plugins/audioscope/audioscope.C:658
 msgid "AudioScope"
 msgstr "AudioScope"
 
 msgid "AudioScope"
 msgstr "AudioScope"
 
@@ -9642,7 +9944,7 @@ msgstr "DeslizarBandas"
 
 #: plugins/bandwipe/bandwipe.C:182
 msgid "BandWipe"
 
 #: plugins/bandwipe/bandwipe.C:182
 msgid "BandWipe"
-msgstr "LimpiarBandas"
+msgstr "EliminarBandas"
 
 #: plugins/bluebanana/bluebanana.C:87
 msgid "Blue Banana"
 
 #: plugins/bluebanana/bluebanana.C:87
 msgid "Blue Banana"
@@ -9683,7 +9985,7 @@ msgstr "Modelo de color desconocido en BluebananaA2Sel: update ()\n"
 
 #: plugins/bluebanana/bluebananawindow.C:2095
 msgid "Combine Selection"
 
 #: plugins/bluebanana/bluebananawindow.C:2095
 msgid "Combine Selection"
-msgstr "Seleccion combinada"
+msgstr "Selección combinada"
 
 #: plugins/bluebanana/bluebananawindow.C:2096
 msgid " Mark Selected Areas"
 
 #: plugins/bluebanana/bluebananawindow.C:2096
 msgid " Mark Selected Areas"
@@ -9715,7 +10017,7 @@ msgid "blue"
 msgstr "azul"
 
 #: plugins/bluebanana/bluebananawindow.C:2119
 msgstr "azul"
 
 #: plugins/bluebanana/bluebananawindow.C:2119
-#: plugins/sketcher/sketcherwindow.C:743 plugins/titler/titler.h:28
+#: plugins/sketcher/sketcherwindow.C:832 plugins/titler/titler.h:28
 msgid "alpha"
 msgstr "alpha"
 
 msgid "alpha"
 msgstr "alpha"
 
@@ -9737,21 +10039,21 @@ msgstr " Filtro Activo"
 
 #: plugins/blur/blur.C:136 plugins/blur/blurwindow.C:55
 msgid "Blur"
 
 #: plugins/blur/blur.C:136 plugins/blur/blurwindow.C:55
 msgid "Blur"
-msgstr "Difuminado"
+msgstr "Desenfoque"
 
 #: plugins/blur/blurwindow.C:147 plugins/downsample/downsample.C:256
 
 #: plugins/blur/blurwindow.C:147 plugins/downsample/downsample.C:256
-#: plugins/flip/flipwindow.C:47 plugins/spectrogram/spectrogram.C:159
+#: plugins/flip/flipwindow.C:47 plugins/spectrogram/spectrogram.C:158
 msgid "Vertical"
 msgstr "Vertical"
 
 #: plugins/blur/blurwindow.C:166 plugins/downsample/downsample.C:238
 msgid "Vertical"
 msgstr "Vertical"
 
 #: plugins/blur/blurwindow.C:166 plugins/downsample/downsample.C:238
-#: plugins/flip/flipwindow.C:53 plugins/spectrogram/spectrogram.C:162
+#: plugins/flip/flipwindow.C:53 plugins/spectrogram/spectrogram.C:161
 msgid "Horizontal"
 msgstr "Horizontal"
 
 #: plugins/blur/blurwindow.C:185
 msgid "Blur alpha"
 msgid "Horizontal"
 msgstr "Horizontal"
 
 #: plugins/blur/blurwindow.C:185
 msgid "Blur alpha"
-msgstr "Difuminado alpha"
+msgstr "Difuminar alpha"
 
 #: plugins/blur/blurwindow.C:200
 msgid "Alpha determines radius"
 
 #: plugins/blur/blurwindow.C:200
 msgid "Alpha determines radius"
@@ -9823,15 +10125,15 @@ msgstr "Valores negfix computado:"
 
 #: plugins/C41/c41.C:253
 msgid "Min/Max R:"
 
 #: plugins/C41/c41.C:253
 msgid "Min/Max R:"
-msgstr "Mín/Max R:"
+msgstr "Mín/Máx R:"
 
 #: plugins/C41/c41.C:257
 msgid "Min/Max G:"
 
 #: plugins/C41/c41.C:257
 msgid "Min/Max G:"
-msgstr "Mín/Max G:"
+msgstr "Mín/Máx G:"
 
 #: plugins/C41/c41.C:261
 msgid "Min/Max B:"
 
 #: plugins/C41/c41.C:261
 msgid "Min/Max B:"
-msgstr "Mín/Max B:"
+msgstr "Mín/Máx B:"
 
 #: plugins/C41/c41.C:265 plugins/C41/c41.C:329
 msgid "Light:"
 
 #: plugins/C41/c41.C:265 plugins/C41/c41.C:329
 msgid "Light:"
@@ -9867,15 +10169,15 @@ msgstr "valores negfix para aplicar:"
 
 #: plugins/C41/c41.C:314
 msgid "Min R:"
 
 #: plugins/C41/c41.C:314
 msgid "Min R:"
-msgstr "Min R:"
+msgstr "Mín R:"
 
 #: plugins/C41/c41.C:319
 msgid "Min G:"
 
 #: plugins/C41/c41.C:319
 msgid "Min G:"
-msgstr "Min G:"
+msgstr "Mín G:"
 
 #: plugins/C41/c41.C:324
 msgid "Min B:"
 
 #: plugins/C41/c41.C:324
 msgid "Min B:"
-msgstr "Min B:"
+msgstr "Mín B:"
 
 #: plugins/C41/c41.C:355
 msgid "Col:"
 
 #: plugins/C41/c41.C:355
 msgid "Col:"
@@ -9930,7 +10232,7 @@ msgstr "Seleccione el rango para transferir:"
 
 #: plugins/cdripper/cdripwindow.C:46 plugins/cdripper/cdripwindow.C:50
 msgid "Min."
 
 #: plugins/cdripper/cdripwindow.C:46 plugins/cdripper/cdripwindow.C:50
 msgid "Min."
-msgstr "Min."
+msgstr "Mín."
 
 #: plugins/cdripper/cdripwindow.C:47 plugins/cdripper/cdripwindow.C:51
 msgid "Sec."
 
 #: plugins/cdripper/cdripwindow.C:47 plugins/cdripper/cdripwindow.C:51
 msgid "Sec."
@@ -9995,11 +10297,11 @@ msgstr "Tolerancia Hue:"
 
 #: plugins/chromakeyhsv/chromakey.C:211
 msgid "Min. Brightness:"
 
 #: plugins/chromakeyhsv/chromakey.C:211
 msgid "Min. Brightness:"
-msgstr "Min. Brillo:"
+msgstr "Mín. Brillo:"
 
 #: plugins/chromakeyhsv/chromakey.C:214
 msgid "Max. Brightness:"
 
 #: plugins/chromakeyhsv/chromakey.C:214
 msgid "Max. Brightness:"
-msgstr "Max Brillo:"
+msgstr "Máx Brillo:"
 
 #: plugins/chromakeyhsv/chromakey.C:217
 msgid "Saturation Offset:"
 
 #: plugins/chromakeyhsv/chromakey.C:217
 msgid "Saturation Offset:"
@@ -10007,7 +10309,7 @@ msgstr "Compensación de Saturación:"
 
 #: plugins/chromakeyhsv/chromakey.C:220
 msgid "Min Saturation:"
 
 #: plugins/chromakeyhsv/chromakey.C:220
 msgid "Min Saturation:"
-msgstr "Min Saturación:"
+msgstr "Mín Saturación:"
 
 #: plugins/chromakeyhsv/chromakey.C:226
 msgid "Mask tweaking:"
 
 #: plugins/chromakeyhsv/chromakey.C:226
 msgid "Mask tweaking:"
@@ -10050,16 +10352,16 @@ msgid "Color 3 Way"
 msgstr "Color de 3 vías"
 
 #: plugins/color3way/color3way.C:582 plugins/color3way/color3way.C:589
 msgstr "Color de 3 vías"
 
 #: plugins/color3way/color3way.C:582 plugins/color3way/color3way.C:589
-#: plugins/colorbalance/colorbalance.C:596
-#: plugins/colorbalance/colorbalance.C:603 plugins/gamma/gamma.C:584
+#: plugins/colorbalance/colorbalance.C:595
+#: plugins/colorbalance/colorbalance.C:602 plugins/gamma/gamma.C:584
 #: plugins/histogram/histogram.C:644 plugins/histogram/histogram.C:660
 #: plugins/histogram/histogram.C:667 plugins/histogram/histogram.C:674
 msgid "Interpolate Pixels"
 msgstr "Interpolar Píxeles"
 
 #: plugins/color3way/color3way.C:583 plugins/color3way/color3way.C:594
 #: plugins/histogram/histogram.C:644 plugins/histogram/histogram.C:660
 #: plugins/histogram/histogram.C:667 plugins/histogram/histogram.C:674
 msgid "Interpolate Pixels"
 msgstr "Interpolar Píxeles"
 
 #: plugins/color3way/color3way.C:583 plugins/color3way/color3way.C:594
-#: plugins/colorbalance/colorbalance.C:597
-#: plugins/colorbalance/colorbalance.C:608 plugins/gamma/gamma.C:406
+#: plugins/colorbalance/colorbalance.C:596
+#: plugins/colorbalance/colorbalance.C:607 plugins/gamma/gamma.C:406
 #: plugins/histogram/histogram.C:645 plugins/histogram/histogram.C:653
 #: plugins/histogram/histogram.C:661 plugins/histogram/histogram.C:677
 #: plugins/interpolate/interpolate.C:245
 #: plugins/histogram/histogram.C:645 plugins/histogram/histogram.C:653
 #: plugins/histogram/histogram.C:661 plugins/histogram/histogram.C:677
 #: plugins/interpolate/interpolate.C:245
@@ -10097,7 +10399,7 @@ msgstr "Copiar a todos"
 msgid "White balance"
 msgstr "Balance de blancos"
 
 msgid "White balance"
 msgstr "Balance de blancos"
 
-#: plugins/colorbalance/colorbalance.C:356
+#: plugins/colorbalance/colorbalance.C:355
 #: plugins/colorbalance/colorbalancewindow.C:55 plugins/gamma/gamma.C:453
 #: plugins/histogram/histogram.C:646 plugins/histogram/histogram.C:654
 #: plugins/histogram/histogram.C:668 plugins/histogram/histogram.C:680
 #: plugins/colorbalance/colorbalancewindow.C:55 plugins/gamma/gamma.C:453
 #: plugins/histogram/histogram.C:646 plugins/histogram/histogram.C:654
 #: plugins/histogram/histogram.C:668 plugins/histogram/histogram.C:680
@@ -10125,46 +10427,77 @@ msgstr "Preservar luminosidad"
 msgid "Lock parameters"
 msgstr "Bloquear parámetros"
 
 msgid "Lock parameters"
 msgstr "Bloquear parámetros"
 
-#: plugins/compressor/compressor.C:117
+#: plugins/compressor/compressor.C:109
 msgid "Compressor"
 msgstr "Compresor"
 
 msgid "Compressor"
 msgstr "Compresor"
 
-#: plugins/compressor/compressor.C:859
-msgid "Reaction secs:"
-msgstr "Segundos de reacción:"
+#: plugins/compressor/compressor.C:394
+#: plugins/compressormulti/comprmultigui.C:113
+msgid "Sound level (Press shift to snap to grid):"
+msgstr "Nivel de sonido (presione Mayúsculas para ajustar a la cuadrícula):"
+
+#: plugins/compressor/compressor.C:406
+#: plugins/compressormulti/comprmultigui.C:129
+msgid "Attack secs:"
+msgstr "Seg de ataque:"
 
 
-#: plugins/compressor/compressor.C:863
-msgid "Decay secs:"
-msgstr "Segundos de atenuación:"
+#: plugins/compressor/compressor.C:412
+#: plugins/compressormulti/comprmultigui.C:135
+msgid "Release secs:"
+msgstr "Segundos de relajación:"
 
 
-#: plugins/compressor/compressor.C:867
+#: plugins/compressor/compressor.C:418
+#: plugins/compressormulti/comprmultigui.C:185
 msgid "Trigger Type:"
 msgstr "Tipo de Disparador:"
 
 msgid "Trigger Type:"
 msgstr "Tipo de Disparador:"
 
-#: plugins/compressor/compressor.C:872
+#: plugins/compressor/compressor.C:424
 msgid "Trigger:"
 msgstr "Desencadenar:"
 
 msgid "Trigger:"
 msgstr "Desencadenar:"
 
-#: plugins/compressor/compressor.C:1022 plugins/compressor/compressor.C:1024
-msgid "Input"
-msgstr "Entrar"
+#: plugins/compressor/compressor.C:434
+#: plugins/compressormulti/comprmultigui.C:145
+msgid "Output:"
+msgstr "Salida:"
 
 
-#: plugins/compressor/compressor.C:1371 plugins/compressor/compressor.C:1376
-msgid "Trigger"
-msgstr "Desencadenar"
+#: plugins/compressor/compressor.C:744
+#: plugins/compressormulti/comprmultigui.C:660
+msgid "Smooth only"
+msgstr "Suavizar sólo"
 
 
-#: plugins/compressor/compressor.C:1372 plugins/piano/piano.C:1107
-#: plugins/synthesizer/synthesizer.C:1553
-msgid "Maximum"
-msgstr "Máximo"
+#: plugins/compressormulti/comprmulti.C:155
+msgid "Compressor Multi"
+msgstr "Compresos Multibanda"
 
 
-#: plugins/compressor/compressor.C:1373
-msgid "Total"
-msgstr "Total"
+#: plugins/compressormulti/comprmultigui.C:99
+msgid "Current band:"
+msgstr "Banda actual:"
 
 
-#: plugins/compressor/compressor.C:1412
-msgid "Smooth only"
-msgstr "Suavizar sólo"
+#: plugins/compressormulti/comprmultigui.C:119
+msgid "Bandwidth:"
+msgstr "Ancho de Banda:"
+
+#: plugins/compressormulti/comprmultigui.C:165
+msgid "Freq range:"
+msgstr "Rango de Frecuencias:"
+
+#: plugins/compressormulti/comprmultigui.C:201
+msgid "Steepness:"
+msgstr "Escarpado:"
+
+#: plugins/compressormulti/comprmultigui.C:207
+#: plugins/echocancel/echocancel.C:459 plugins/graphic/graphic.C:790
+#: plugins/spectrogram/spectrogram.C:409
+msgid "Window size:"
+msgstr "Tamaño de la ventana:"
+
+#: plugins/compressormulti/comprmultigui.C:674
+msgid "Solo band"
+msgstr "Sólo esta Banda"
+
+#: plugins/compressormulti/comprmultigui.C:693
+msgid "Bypass band"
+msgstr "Banda de derivación"
 
 #: plugins/crikey/crikey.C:259
 msgid "CriKey"
 
 #: plugins/crikey/crikey.C:259
 msgid "CriKey"
@@ -10180,14 +10513,14 @@ msgid "Draw mode:"
 msgstr "Modo dibujo:"
 
 #: plugins/crikey/crikeywindow.C:150 plugins/radialblur/radialblur.C:150
 msgstr "Modo dibujo:"
 
 #: plugins/crikey/crikeywindow.C:150 plugins/radialblur/radialblur.C:150
-#: plugins/sketcher/sketcherwindow.C:396 plugins/titler/titlerwindow.C:289
+#: plugins/sketcher/sketcherwindow.C:448 plugins/titler/titlerwindow.C:289
 #: plugins/titler/titlerwindow.C:293 plugins/tracer/tracerwindow.C:114
 #: plugins/zoomblur/zoomblur.C:148
 msgid "X:"
 msgstr "X:"
 
 #: plugins/crikey/crikeywindow.C:159 plugins/perspective/perspective.C:137
 #: plugins/titler/titlerwindow.C:293 plugins/tracer/tracerwindow.C:114
 #: plugins/zoomblur/zoomblur.C:148
 msgid "X:"
 msgstr "X:"
 
 #: plugins/crikey/crikeywindow.C:159 plugins/perspective/perspective.C:137
-#: plugins/radialblur/radialblur.C:157 plugins/sketcher/sketcherwindow.C:413
+#: plugins/radialblur/radialblur.C:157 plugins/sketcher/sketcherwindow.C:465
 #: plugins/titler/titlerwindow.C:290 plugins/titler/titlerwindow.C:298
 #: plugins/tracer/tracerwindow.C:124 plugins/yuv/yuv.C:264
 #: plugins/yuv/yuvwindow.C:43 plugins/zoomblur/zoomblur.C:155
 #: plugins/titler/titlerwindow.C:290 plugins/titler/titlerwindow.C:298
 #: plugins/tracer/tracerwindow.C:124 plugins/yuv/yuv.C:264
 #: plugins/yuv/yuvwindow.C:43 plugins/zoomblur/zoomblur.C:155
@@ -10211,13 +10544,13 @@ msgid "E"
 msgstr "E"
 
 #: plugins/crikey/crikeywindow.C:351 plugins/crop/cropwin.C:115
 msgstr "E"
 
 #: plugins/crikey/crikeywindow.C:351 plugins/crop/cropwin.C:115
-#: plugins/sketcher/sketcherwindow.C:56 plugins/sketcher/sketcherwindow.C:993
+#: plugins/sketcher/sketcherwindow.C:56 plugins/sketcher/sketcherwindow.C:1082
 #: plugins/tracer/tracerwindow.C:362
 msgid "X"
 msgstr "X"
 
 #: plugins/crikey/crikeywindow.C:352 plugins/crop/cropwin.C:124
 #: plugins/tracer/tracerwindow.C:362
 msgid "X"
 msgstr "X"
 
 #: plugins/crikey/crikeywindow.C:352 plugins/crop/cropwin.C:124
-#: plugins/sketcher/sketcherwindow.C:994 plugins/tracer/tracerwindow.C:363
+#: plugins/sketcher/sketcherwindow.C:1083 plugins/tracer/tracerwindow.C:363
 msgid "Y"
 msgstr "Y"
 
 msgid "Y"
 msgstr "Y"
 
@@ -10229,15 +10562,15 @@ msgstr "T"
 msgid "Tag"
 msgstr "Etiqueta"
 
 msgid "Tag"
 msgstr "Etiqueta"
 
-#: plugins/crikey/crikeywindow.C:547 plugins/sketcher/sketcherwindow.C:909
-#: plugins/sketcher/sketcherwindow.C:1154 plugins/tracer/tracerwindow.C:504
+#: plugins/crikey/crikeywindow.C:547 plugins/sketcher/sketcherwindow.C:998
+#: plugins/sketcher/sketcherwindow.C:1243 plugins/tracer/tracerwindow.C:504
 msgid "Dn"
 msgstr "Dn"
 
 #: plugins/crikey/crikeywindow.C:571 plugins/findobj/findobjwindow.C:521
 #: plugins/findobj/findobjwindow.C:563 plugins/findobj/findobjwindow.C:605
 #: plugins/mandelcuda/mandelbrotwindow.C:158
 msgid "Dn"
 msgstr "Dn"
 
 #: plugins/crikey/crikeywindow.C:571 plugins/findobj/findobjwindow.C:521
 #: plugins/findobj/findobjwindow.C:563 plugins/findobj/findobjwindow.C:605
 #: plugins/mandelcuda/mandelbrotwindow.C:158
-#: plugins/nbodycuda/nbodywindow.C:175 plugins/sketcher/sketcherwindow.C:1193
+#: plugins/nbodycuda/nbodywindow.C:175 plugins/sketcher/sketcherwindow.C:1282
 #: plugins/titler/titlerwindow.C:1229 plugins/tracer/tracerwindow.C:528
 msgid "Drag"
 msgstr "Arrastrar"
 #: plugins/titler/titlerwindow.C:1229 plugins/tracer/tracerwindow.C:528
 msgid "Drag"
 msgstr "Arrastrar"
@@ -10372,7 +10705,7 @@ msgstr "Mantener campo inferior"
 
 #: plugins/deinterlace-cv/deinterwindow-cv.C:95
 msgid "Average top fields"
 
 #: plugins/deinterlace-cv/deinterwindow-cv.C:95
 msgid "Average top fields"
-msgstr "Promedio campos superior"
+msgstr "Promediar campos superiores"
 
 #: plugins/deinterlace-cv/deinterwindow-cv.C:97
 msgid "Average bottom fields"
 
 #: plugins/deinterlace-cv/deinterwindow-cv.C:97
 msgid "Average bottom fields"
@@ -10434,8 +10767,8 @@ msgid "Delay Video"
 msgstr "Retrasar vídeo"
 
 #: plugins/denoise/denoise.C:768 plugins/echocancel/echocancel.C:433
 msgstr "Retrasar vídeo"
 
 #: plugins/denoise/denoise.C:768 plugins/echocancel/echocancel.C:433
-#: plugins/gain/gainwindow.C:56 plugins/graphic/graphic.C:808
-#: plugins/spectrogram/spectrogram.C:401 plugins/vocoder/vocoder.C:297
+#: plugins/gain/gainwindow.C:56 plugins/graphic/graphic.C:778
+#: plugins/spectrogram/spectrogram.C:396 plugins/vocoder/vocoder.C:297
 msgid "Level:"
 msgstr "Nivel:"
 
 msgid "Level:"
 msgstr "Nivel:"
 
@@ -10641,7 +10974,7 @@ msgstr "len:"
 
 #: plugins/descratch/descratch.C:546
 msgid "blur:"
 
 #: plugins/descratch/descratch.C:546
 msgid "blur:"
-msgstr "difuminado:"
+msgstr "desenfoque:"
 
 #: plugins/descratch/descratch.C:549
 msgid "gap:"
 
 #: plugins/descratch/descratch.C:549
 msgid "gap:"
@@ -10709,7 +11042,9 @@ msgstr "Compensación vertical"
 
 #: plugins/downsample/downsample.C:378 plugins/reframert/reframert.C:241
 msgid "Downsample"
 
 #: plugins/downsample/downsample.C:378 plugins/reframert/reframert.C:241
 msgid "Downsample"
-msgstr "Disminuir resolución"
+msgstr ""
+"Píxelar\n"
+"Bajar Resolución"
 
 #: plugins/echo/echo.C:147
 msgid "Level: "
 
 #: plugins/echo/echo.C:147
 msgid "Level: "
@@ -10740,8 +11075,8 @@ msgid "OFF"
 msgstr "OFF"
 
 #: plugins/echocancel/echocancel.C:263 plugins/normalize/normalize.C:53
 msgstr "OFF"
 
 #: plugins/echocancel/echocancel.C:263 plugins/normalize/normalize.C:53
-#: plugins/piano/piano.C:1127 plugins/spectrogram/spectrogram.C:246
-#: plugins/synthesizer/synthesizer.C:1574
+#: plugins/piano/piano.C:1127 plugins/spectrogram/spectrogram.C:245
+#: plugins/synthesizer/synthesizer.C:1584
 msgid "Normalize"
 msgstr "Normalizar"
 
 msgid "Normalize"
 msgstr "Normalizar"
 
@@ -10749,16 +11084,11 @@ msgstr "Normalizar"
 msgid "Gain: "
 msgstr "Ganancia: "
 
 msgid "Gain: "
 msgstr "Ganancia: "
 
-#: plugins/echocancel/echocancel.C:459 plugins/graphic/graphic.C:820
-#: plugins/spectrogram/spectrogram.C:414
-msgid "Window size:"
-msgstr "Tamaño de la ventana:"
-
-#: plugins/echocancel/echocancel.C:476 plugins/spectrogram/spectrogram.C:445
+#: plugins/echocancel/echocancel.C:476 plugins/spectrogram/spectrogram.C:439
 msgid "History:"
 msgstr "Historico:"
 
 msgid "History:"
 msgstr "Historico:"
 
-#: plugins/echocancel/echocancel.C:483 plugins/spectrogram/spectrogram.C:453
+#: plugins/echocancel/echocancel.C:483 plugins/spectrogram/spectrogram.C:447
 msgid "X Zoom:"
 msgstr "X Zoom:"
 
 msgid "X Zoom:"
 msgstr "X Zoom:"
 
@@ -10778,7 +11108,7 @@ msgstr "Picos:"
 msgid "0 Hz"
 msgstr "0 Hz"
 
 msgid "0 Hz"
 msgstr "0 Hz"
 
-#: plugins/echocancel/echocancel.C:503 plugins/spectrogram/spectrogram.C:466
+#: plugins/echocancel/echocancel.C:503 plugins/spectrogram/spectrogram.C:460
 msgid "Amplitude: 0 dB"
 msgstr "Amplitud: 0 dB"
 
 msgid "Amplitude: 0 dB"
 msgstr "Amplitud: 0 dB"
 
@@ -11024,6 +11354,10 @@ msgstr "Dibujar vectores"
 msgid "Do stabilization"
 msgstr "Estabilizar"
 
 msgid "Do stabilization"
 msgstr "Estabilizar"
 
+#: plugins/foreground/foreground.C:142
+msgid "Foreground"
+msgstr "Primer plano"
+
 #: plugins/framefield/framefield.C:564 plugins/rgb601/rgb601.C:294
 #: plugins/rgb601/rgb601.C:295
 msgid "Frames to fields"
 #: plugins/framefield/framefield.C:564 plugins/rgb601/rgb601.C:294
 #: plugins/rgb601/rgb601.C:295
 msgid "Frames to fields"
@@ -11146,11 +11480,11 @@ msgstr "Color exterior:"
 msgid "Gradient"
 msgstr "Degradado"
 
 msgid "Gradient"
 msgstr "Degradado"
 
-#: plugins/graphic/graphic.C:803
+#: plugins/graphic/graphic.C:773
 msgid "Frequency:"
 msgstr "Frecuencia:"
 
 msgid "Frequency:"
 msgstr "Frecuencia:"
 
-#: plugins/graphic/graphic.C:1048
+#: plugins/graphic/graphic.C:1001
 msgid "EQ Graphic"
 msgstr "Graphic EQ"
 
 msgid "EQ Graphic"
 msgstr "Graphic EQ"
 
@@ -11210,11 +11544,11 @@ msgstr "Entrada y:"
 
 #: plugins/histogram_bezier/bistogramwindow.C:119
 msgid "Output min:"
 
 #: plugins/histogram_bezier/bistogramwindow.C:119
 msgid "Output min:"
-msgstr "Min de la salida:"
+msgstr "Mín de la salida:"
 
 #: plugins/histogram_bezier/bistogramwindow.C:125
 msgid "Output Max:"
 
 #: plugins/histogram_bezier/bistogramwindow.C:125
 msgid "Output Max:"
-msgstr "Salida de Max:"
+msgstr "Máx de Salida:"
 
 #: plugins/histogram_bezier/bistogramwindow.C:155
 msgid "Interpolation:"
 
 #: plugins/histogram_bezier/bistogramwindow.C:155
 msgid "Interpolation:"
@@ -11303,8 +11637,8 @@ msgid "Invert Video"
 msgstr "Invertir Vídeo"
 
 #: plugins/invertvideo/invertwindow.C:44 plugins/piano/piano.C:1207
 msgstr "Invertir Vídeo"
 
 #: plugins/invertvideo/invertwindow.C:44 plugins/piano/piano.C:1207
-#: plugins/piano/piano.C:1254 plugins/synthesizer/synthesizer.C:1657
-#: plugins/synthesizer/synthesizer.C:1706 plugins/tracer/tracerwindow.C:670
+#: plugins/piano/piano.C:1254 plugins/synthesizer/synthesizer.C:1667
+#: plugins/synthesizer/synthesizer.C:1716 plugins/tracer/tracerwindow.C:670
 msgid "Invert"
 msgstr "Invertir"
 
 msgid "Invert"
 msgstr "Invertir"
 
@@ -11403,19 +11737,19 @@ msgstr "Interp:"
 msgid "Lens"
 msgstr "Lente"
 
 msgid "Lens"
 msgstr "Lente"
 
-#: plugins/level/leveleffect.C:130
+#: plugins/level/leveleffect.C:93
 msgid "Duration (seconds):"
 msgstr "Duración (segundos):"
 
 msgid "Duration (seconds):"
 msgstr "Duración (segundos):"
 
-#: plugins/level/leveleffect.C:133
+#: plugins/level/leveleffect.C:96
 msgid "Max soundlevel (dB):"
 msgid "Max soundlevel (dB):"
-msgstr "Niveldesonido Max (dB):"
+msgstr "Volumen Máx (dB):"
 
 
-#: plugins/level/leveleffect.C:136
+#: plugins/level/leveleffect.C:99
 msgid "RMS soundlevel (dB):"
 msgstr "Niveldesonido RMS (dB):"
 
 msgid "RMS soundlevel (dB):"
 msgstr "Niveldesonido RMS (dB):"
 
-#: plugins/level/leveleffect.C:198
+#: plugins/level/leveleffect.C:134
 msgid "SoundLevel"
 msgstr "Niveldesonido"
 
 msgid "SoundLevel"
 msgstr "Niveldesonido"
 
@@ -11430,7 +11764,7 @@ msgstr "Pasos:"
 
 #: plugins/linearblur/linearblur.C:358
 msgid "Linear Blur"
 
 #: plugins/linearblur/linearblur.C:358
 msgid "Linear Blur"
-msgstr "Difuminado linear"
+msgstr "Desenfoque Lineal"
 
 #: plugins/liveaudio/liveaudio.C:149
 msgid "Live audio"
 
 #: plugins/liveaudio/liveaudio.C:149
 msgid "Live audio"
@@ -11474,7 +11808,7 @@ msgstr "Julia"
 
 #: plugins/motion/motion.C:215
 msgid "Motion"
 
 #: plugins/motion/motion.C:215
 msgid "Motion"
-msgstr "Movimiento"
+msgstr "Animación"
 
 #: plugins/motion/motionwindow.C:57 plugins/motion2point/motionwindow.C:76
 #: plugins/motion-cv/motionwindow-cv.C:56
 
 #: plugins/motion/motionwindow.C:57 plugins/motion2point/motionwindow.C:76
 #: plugins/motion-cv/motionwindow-cv.C:56
@@ -11807,7 +12141,7 @@ msgstr "Activar seguimiento"
 
 #: plugins/motionblur/motionblur.C:317
 msgid "Motion Blur"
 
 #: plugins/motionblur/motionblur.C:317
 msgid "Motion Blur"
-msgstr "Difuminado in movimiento"
+msgstr "Desenfoque de movimiento"
 
 #: plugins/motion-cv/motion-cv.C:209
 msgid "MotionCV"
 
 #: plugins/motion-cv/motion-cv.C:209
 msgid "MotionCV"
@@ -11845,7 +12179,7 @@ msgstr "punto"
 msgid "sprite"
 msgstr "duende"
 
 msgid "sprite"
 msgstr "duende"
 
-#: plugins/nbodycuda/nbodywindow.C:36 plugins/sketcher/sketcherwindow.C:742
+#: plugins/nbodycuda/nbodywindow.C:36 plugins/sketcher/sketcherwindow.C:831
 #: plugins/titler/titler.h:27
 msgid "color"
 msgstr "color"
 #: plugins/titler/titler.h:27
 msgid "color"
 msgstr "color"
@@ -11872,7 +12206,7 @@ msgstr ": Normalizar"
 
 #: plugins/normalize/normalizewindow.C:45
 msgid "Enter the DB to overload by:"
 
 #: plugins/normalize/normalizewindow.C:45
 msgid "Enter the DB to overload by:"
-msgstr "Introduzca el DB para sobrecargar:"
+msgstr "Introduzca el db para sobrecargar:"
 
 #: plugins/normalize/normalizewindow.C:80
 msgid "Treat tracks independantly"
 
 #: plugins/normalize/normalizewindow.C:80
 msgid "Treat tracks independantly"
@@ -11940,21 +12274,21 @@ msgid "Qual"
 msgstr "Calid"
 
 #: plugins/parametric/parametric.C:426 plugins/piano/piano.C:503
 msgstr "Calid"
 
 #: plugins/parametric/parametric.C:426 plugins/piano/piano.C:503
-#: plugins/piano/piano.C:563 plugins/synthesizer/synthesizer.C:528
-#: plugins/synthesizer/synthesizer.C:591
+#: plugins/piano/piano.C:563 plugins/synthesizer/synthesizer.C:535
+#: plugins/synthesizer/synthesizer.C:599
 msgid "Level"
 msgstr "Nivel"
 
 #: plugins/parametric/parametric.C:438 plugins/piano/piano.C:554
 msgid "Level"
 msgstr "Nivel"
 
 #: plugins/parametric/parametric.C:438 plugins/piano/piano.C:554
-#: plugins/synthesizer/synthesizer.C:582 plugins/vocoder/vocoder.C:294
+#: plugins/synthesizer/synthesizer.C:590 plugins/vocoder/vocoder.C:294
 msgid "Wetness:"
 msgstr "Wetness:"
 
 msgid "Wetness:"
 msgstr "Wetness:"
 
-#: plugins/parametric/parametric.C:445
+#: plugins/parametric/parametric.C:445 plugins/reverb/reverbwindow.C:173
 msgid "Window:"
 msgstr "Ventana:"
 
 msgid "Window:"
 msgstr "Ventana:"
 
-#: plugins/parametric/parametric.C:819
+#: plugins/parametric/parametric.C:769
 msgid "EQ Parametric"
 msgstr "EQ paramétrico"
 
 msgid "EQ Parametric"
 msgstr "EQ paramétrico"
 
@@ -12035,90 +12369,86 @@ msgid "Pianoesizer"
 msgstr "Pianoesizer"
 
 #: plugins/piano/piano.C:504 plugins/piano/piano.C:565
 msgstr "Pianoesizer"
 
 #: plugins/piano/piano.C:504 plugins/piano/piano.C:565
-#: plugins/synthesizer/synthesizer.C:529 plugins/synthesizer/synthesizer.C:593
+#: plugins/synthesizer/synthesizer.C:536 plugins/synthesizer/synthesizer.C:601
 msgid "Phase"
 msgstr "Fase"
 
 #: plugins/piano/piano.C:505 plugins/piano/piano.C:567
 msgid "Phase"
 msgstr "Fase"
 
 #: plugins/piano/piano.C:505 plugins/piano/piano.C:567
-#: plugins/synthesizer/synthesizer.C:530 plugins/synthesizer/synthesizer.C:595
+#: plugins/synthesizer/synthesizer.C:537 plugins/synthesizer/synthesizer.C:603
 msgid "Harmonic"
 msgstr "Armónica"
 
 msgid "Harmonic"
 msgstr "Armónica"
 
-#: plugins/piano/piano.C:530 plugins/synthesizer/synthesizer.C:556
+#: plugins/piano/piano.C:530 plugins/synthesizer/synthesizer.C:564
 msgid "Wave Function"
 msgstr "Función onda"
 
 msgid "Wave Function"
 msgstr "Función onda"
 
-#: plugins/piano/piano.C:545 plugins/synthesizer/synthesizer.C:572
+#: plugins/piano/piano.C:545 plugins/synthesizer/synthesizer.C:580
 msgid "Base Frequency:"
 msgstr "Frecuencia Base:"
 
 msgid "Base Frequency:"
 msgstr "Frecuencia Base:"
 
-#: plugins/piano/piano.C:685 plugins/synthesizer/synthesizer.C:971
+#: plugins/piano/piano.C:685 plugins/synthesizer/synthesizer.C:972
 #, c-format
 msgid "DC"
 msgstr "DC"
 
 #: plugins/piano/piano.C:686 plugins/piano/piano.C:939
 #: plugins/piano/piano.C:1228 plugins/piano/piano.C:1295
 #, c-format
 msgid "DC"
 msgstr "DC"
 
 #: plugins/piano/piano.C:686 plugins/piano/piano.C:939
 #: plugins/piano/piano.C:1228 plugins/piano/piano.C:1295
-#: plugins/synthesizer/synthesizer.C:972 plugins/synthesizer/synthesizer.C:1397
-#: plugins/synthesizer/synthesizer.C:1679
-#: plugins/synthesizer/synthesizer.C:1749 plugins/tremolo/tremolo.C:470
+#: plugins/synthesizer/synthesizer.C:973 plugins/synthesizer/synthesizer.C:1407
+#: plugins/synthesizer/synthesizer.C:1689
+#: plugins/synthesizer/synthesizer.C:1759 plugins/tremolo/tremolo.C:470
 #, c-format
 msgid "Sine"
 msgstr "Seno"
 
 #: plugins/piano/piano.C:687 plugins/piano/piano.C:940
 #, c-format
 msgid "Sine"
 msgstr "Seno"
 
 #: plugins/piano/piano.C:687 plugins/piano/piano.C:940
-#: plugins/synthesizer/synthesizer.C:973 plugins/synthesizer/synthesizer.C:1398
+#: plugins/synthesizer/synthesizer.C:974 plugins/synthesizer/synthesizer.C:1408
 #: plugins/tremolo/tremolo.C:471
 #, c-format
 msgid "Sawtooth"
 msgstr "Diente de sierra"
 
 #: plugins/piano/piano.C:690 plugins/piano/piano.C:943
 #: plugins/tremolo/tremolo.C:471
 #, c-format
 msgid "Sawtooth"
 msgstr "Diente de sierra"
 
 #: plugins/piano/piano.C:690 plugins/piano/piano.C:943
-#: plugins/synthesizer/synthesizer.C:976 plugins/synthesizer/synthesizer.C:1401
+#: plugins/synthesizer/synthesizer.C:977 plugins/synthesizer/synthesizer.C:1411
 #, c-format
 msgid "Pulse"
 msgstr "Pulso"
 
 #: plugins/piano/piano.C:691 plugins/piano/piano.C:944
 #, c-format
 msgid "Pulse"
 msgstr "Pulso"
 
 #: plugins/piano/piano.C:691 plugins/piano/piano.C:944
-#: plugins/synthesizer/synthesizer.C:977 plugins/synthesizer/synthesizer.C:1402
+#: plugins/synthesizer/synthesizer.C:978 plugins/synthesizer/synthesizer.C:1412
 #, c-format
 msgid "Noise"
 msgstr "Ruido"
 
 #: plugins/piano/piano.C:1086 plugins/piano/piano.C:1275
 #, c-format
 msgid "Noise"
 msgstr "Ruido"
 
 #: plugins/piano/piano.C:1086 plugins/piano/piano.C:1275
-#: plugins/synthesizer/synthesizer.C:1531
-#: plugins/synthesizer/synthesizer.C:1728
+#: plugins/synthesizer/synthesizer.C:1541
+#: plugins/synthesizer/synthesizer.C:1738
 msgid "Zero"
 msgstr "Cero"
 
 msgid "Zero"
 msgstr "Cero"
 
-#: plugins/piano/piano.C:1163 plugins/synthesizer/synthesizer.C:1611
+#: plugins/piano/piano.C:1107 plugins/synthesizer/synthesizer.C:1563
+msgid "Maximum"
+msgstr "Máximo"
+
+#: plugins/piano/piano.C:1163 plugins/synthesizer/synthesizer.C:1621
 msgid "Slope"
 msgstr "Pendiente"
 
 #: plugins/piano/piano.C:1186 plugins/piano/piano.C:1318
 msgid "Slope"
 msgstr "Pendiente"
 
 #: plugins/piano/piano.C:1186 plugins/piano/piano.C:1318
-#: plugins/piano/piano.C:1343 plugins/synthesizer/synthesizer.C:1635
-#: plugins/synthesizer/synthesizer.C:1773
-#: plugins/synthesizer/synthesizer.C:1799
+#: plugins/piano/piano.C:1343 plugins/synthesizer/synthesizer.C:1645
+#: plugins/synthesizer/synthesizer.C:1783
+#: plugins/synthesizer/synthesizer.C:1809
 msgid "Random"
 msgstr "Aleatorio"
 
 msgid "Random"
 msgstr "Aleatorio"
 
-#: plugins/piano/piano.C:1364 plugins/synthesizer/synthesizer.C:1821
+#: plugins/piano/piano.C:1364 plugins/synthesizer/synthesizer.C:1899
 msgid "Enumerate"
 msgstr "Enumerar"
 
 msgid "Enumerate"
 msgstr "Enumerar"
 
-#: plugins/piano/piano.C:1384 plugins/synthesizer/synthesizer.C:1842
-msgid "Even"
-msgstr "Par"
-
-#: plugins/piano/piano.C:1407 plugins/synthesizer/synthesizer.C:1866
-msgid "Odd"
-msgstr "Impar"
-
-#: plugins/piano/piano.C:1425 plugins/synthesizer/synthesizer.C:1885
+#: plugins/piano/piano.C:1425 plugins/synthesizer/synthesizer.C:1963
 msgid "Fibonnacci"
 msgstr "Fibonnacci"
 
 msgid "Fibonnacci"
 msgstr "Fibonnacci"
 
-#: plugins/piano/piano.C:1449 plugins/synthesizer/synthesizer.C:1911
+#: plugins/piano/piano.C:1449 plugins/synthesizer/synthesizer.C:1989
 msgid "Prime"
 msgstr "Primo"
 
 msgid "Prime"
 msgstr "Primo"
 
@@ -12158,7 +12488,7 @@ msgstr "Iteraciones:"
 
 #: plugins/radialblur/radialblur.C:352
 msgid "Radial Blur"
 
 #: plugins/radialblur/radialblur.C:352
 msgid "Radial Blur"
-msgstr "Difuminado radial"
+msgstr "Desenfoque radial"
 
 #: plugins/reframe/reframe.C:54
 msgid "Reframe"
 
 #: plugins/reframe/reframe.C:54
 msgid "Reframe"
@@ -12178,7 +12508,7 @@ msgstr "ReframeRT"
 
 #: plugins/removegaps/removegaps.C:105
 msgid "Threshold of gap (DB):"
 
 #: plugins/removegaps/removegaps.C:105
 msgid "Threshold of gap (DB):"
-msgstr "Umbral de gap (DB):"
+msgstr "Umbral de gap (db):"
 
 #: plugins/removegaps/removegaps.C:112
 msgid "Max duration of gap (Seconds):"
 
 #: plugins/removegaps/removegaps.C:112
 msgid "Max duration of gap (Seconds):"
@@ -12230,42 +12560,10 @@ msgstr "Salida de ejemplos:"
 msgid "ResampleRT"
 msgstr "RemuestreoRT"
 
 msgid "ResampleRT"
 msgstr "RemuestreoRT"
 
-#: plugins/reverb/reverb.C:101
+#: plugins/reverb/reverb.C:85
 msgid "Reverb"
 msgstr "Reverberación"
 
 msgid "Reverb"
 msgstr "Reverberación"
 
-#: plugins/reverb/reverbwindow.C:54
-msgid "Initial signal level:"
-msgstr "Nivel de la señal inicial:"
-
-#: plugins/reverb/reverbwindow.C:56
-msgid "ms before reflections:"
-msgstr "ms antes reflexiones:"
-
-#: plugins/reverb/reverbwindow.C:58
-msgid "First reflection level:"
-msgstr "Primer nivel de reflexión:"
-
-#: plugins/reverb/reverbwindow.C:60
-msgid "Last reflection level:"
-msgstr "Último nivel de reflexión:"
-
-#: plugins/reverb/reverbwindow.C:62
-msgid "Number of reflections:"
-msgstr "Número de reflexiones:"
-
-#: plugins/reverb/reverbwindow.C:64
-msgid "ms of reflections:"
-msgstr "ms de reflexiones:"
-
-#: plugins/reverb/reverbwindow.C:66
-msgid "Start band for lowpass:"
-msgstr "Inicio banda por lowpass:"
-
-#: plugins/reverb/reverbwindow.C:68
-msgid "End band for lowpass:"
-msgstr "Fin de banda por lowpass:"
-
 #: plugins/reverseaudio/reverseaudio.C:170
 msgid "Reverse audio"
 msgstr "Audio Reverse"
 #: plugins/reverseaudio/reverseaudio.C:170
 msgid "Reverse audio"
 msgstr "Audio Reverse"
@@ -12438,7 +12736,7 @@ msgstr "Dirección"
 
 #: plugins/shapewipe/shapewipe.C:365
 msgid "Shape Wipe"
 
 #: plugins/shapewipe/shapewipe.C:365
 msgid "Shape Wipe"
-msgstr "Limpiar forma"
+msgstr "Barrido"
 
 #: plugins/shapewipe/shapewipe.C:601
 #, c-format
 
 #: plugins/shapewipe/shapewipe.C:601
 #, c-format
@@ -12473,7 +12771,7 @@ msgstr "Compensación par:"
 msgid "ShiftInterlace"
 msgstr "Moverentrelazado"
 
 msgid "ShiftInterlace"
 msgstr "Moverentrelazado"
 
-#: plugins/sketcher/sketcher.C:348
+#: plugins/sketcher/sketcher.C:352
 msgid "Sketcher"
 msgstr "Dibujante"
 
 msgid "Sketcher"
 msgstr "Dibujante"
 
@@ -12505,23 +12803,31 @@ msgstr "/"
 msgid "Curve Color"
 msgstr "Curva de color"
 
 msgid "Curve Color"
 msgstr "Curva de color"
 
-#: plugins/sketcher/sketcherwindow.C:307
+#: plugins/sketcher/sketcherwindow.C:281
+msgid "Anti-Aliasing"
+msgstr "Alisando los bordes dentados"
+
+#: plugins/sketcher/sketcherwindow.C:297
+msgid "Double"
+msgstr "Doble"
+
+#: plugins/sketcher/sketcherwindow.C:355
 msgid "Curve"
 msgstr "Curva"
 
 msgid "Curve"
 msgstr "Curva"
 
-#: plugins/sketcher/sketcherwindow.C:330 plugins/sketcher/sketcherwindow.C:331
+#: plugins/sketcher/sketcherwindow.C:382 plugins/sketcher/sketcherwindow.C:383
 msgid "Pen:"
 msgstr "Pluma:"
 
 msgid "Pen:"
 msgstr "Pluma:"
 
-#: plugins/sketcher/sketcherwindow.C:381
+#: plugins/sketcher/sketcherwindow.C:433
 msgid "Point"
 msgstr "Punto"
 
 msgid "Point"
 msgstr "Punto"
 
-#: plugins/sketcher/sketcherwindow.C:402 plugins/sketcher/sketcherwindow.C:403
+#: plugins/sketcher/sketcherwindow.C:454 plugins/sketcher/sketcherwindow.C:455
 msgid "ID:"
 msgstr "Id:"
 
 msgid "ID:"
 msgstr "Id:"
 
-#: plugins/sketcher/sketcherwindow.C:428
+#: plugins/sketcher/sketcherwindow.C:483
 msgid ""
 "\n"
 "Shift=\n"
 msgid ""
 "\n"
 "Shift=\n"
@@ -12537,7 +12843,7 @@ msgstr ""
 "Ctrl+Alt=\n"
 "Ctrl+Mayús="
 
 "Ctrl+Alt=\n"
 "Ctrl+Mayús="
 
-#: plugins/sketcher/sketcherwindow.C:435
+#: plugins/sketcher/sketcherwindow.C:490
 msgid ""
 "     LMB\n"
 "new line point\n"
 msgid ""
 "     LMB\n"
 "new line point\n"
@@ -12553,7 +12859,7 @@ msgstr ""
 "arrastrar todas las curvas\n"
 "nuevo punto de llenado"
 
 "arrastrar todas las curvas\n"
 "nuevo punto de llenado"
 
-#: plugins/sketcher/sketcherwindow.C:442
+#: plugins/sketcher/sketcherwindow.C:497
 msgid ""
 "      RMB\n"
 "new arc point\n"
 msgid ""
 "      RMB\n"
 "new arc point\n"
@@ -12569,23 +12875,23 @@ msgstr ""
 "nueva curva\n"
 "nuevo punto de partida"
 
 "nueva curva\n"
 "nuevo punto de partida"
 
-#: plugins/sketcher/sketcherwindow.C:739 plugins/sketcher/sketcherwindow.C:991
+#: plugins/sketcher/sketcherwindow.C:828 plugins/sketcher/sketcherwindow.C:1080
 msgid "ID"
 msgstr "ID"
 
 msgid "ID"
 msgstr "ID"
 
-#: plugins/sketcher/sketcherwindow.C:740
+#: plugins/sketcher/sketcherwindow.C:829
 msgid "width"
 msgstr "ancho"
 
 msgid "width"
 msgstr "ancho"
 
-#: plugins/sketcher/sketcherwindow.C:741
+#: plugins/sketcher/sketcherwindow.C:830
 msgid "pen"
 msgstr "pluma"
 
 msgid "pen"
 msgstr "pluma"
 
-#: plugins/sketcher/sketcherwindow.C:859 plugins/sketcher/sketcherwindow.C:1234
+#: plugins/sketcher/sketcherwindow.C:948 plugins/sketcher/sketcherwindow.C:1323
 msgid "sketcherwindow#Del"
 msgstr "Borrar"
 
 msgid "sketcherwindow#Del"
 msgstr "Borrar"
 
-#: plugins/sketcher/sketcherwindow.C:992
+#: plugins/sketcher/sketcherwindow.C:1081
 msgid "Type"
 msgstr "Tipo"
 
 msgid "Type"
 msgstr "Tipo"
 
@@ -12593,21 +12899,21 @@ msgstr "Tipo"
 msgid "Slide"
 msgstr "Deslizar"
 
 msgid "Slide"
 msgstr "Deslizar"
 
-#: plugins/spectrogram/spectrogram.C:460
+#: plugins/spectrogram/spectrogram.C:454
 msgid "Freq: 0 Hz"
 msgstr "Freq: 0 Hz"
 
 msgid "Freq: 0 Hz"
 msgstr "Freq: 0 Hz"
 
-#: plugins/spectrogram/spectrogram.C:590
+#: plugins/spectrogram/spectrogram.C:579
 #, c-format
 msgid "Freq: %d Hz"
 msgstr "Freq: %d Hz"
 
 #, c-format
 msgid "Freq: %d Hz"
 msgstr "Freq: %d Hz"
 
-#: plugins/spectrogram/spectrogram.C:593
+#: plugins/spectrogram/spectrogram.C:582
 #, c-format
 msgid "Amplitude: %.2f dB"
 msgstr "Amplitud: %.2f dB"
 
 #, c-format
 msgid "Amplitude: %.2f dB"
 msgstr "Amplitud: %.2f dB"
 
-#: plugins/spectrogram/spectrogram.C:684
+#: plugins/spectrogram/spectrogram.C:665
 msgid "Spectrogram"
 msgstr "Espectrograma"
 
 msgid "Spectrogram"
 msgstr "Espectrograma"
 
@@ -12746,7 +13052,7 @@ msgstr "Abrir un archivo SVG existente o crear uno nuevo"
 
 #: plugins/svg/svgwin.C:456
 msgid "update dpi"
 
 #: plugins/svg/svgwin.C:456
 msgid "update dpi"
-msgstr "Actualización dpi"
+msgstr "actualización dpi"
 
 #: plugins/swapchannels/swapchannels.C:109
 #: plugins/swapchannels/swapchannels.C:235
 
 #: plugins/swapchannels/swapchannels.C:109
 #: plugins/swapchannels/swapchannels.C:235
@@ -12785,29 +13091,41 @@ msgstr "Fotogramas de Intercambio"
 msgid "Synthesizer"
 msgstr "Synthesizador"
 
 msgid "Synthesizer"
 msgstr "Synthesizador"
 
-#: plugins/synthesizer/synthesizer.C:649
+#: plugins/synthesizer/synthesizer.C:654
 msgid "Momentary notes"
 msgstr "Notas momentáneas"
 
 msgid "Momentary notes"
 msgstr "Notas momentáneas"
 
-#: plugins/synthesizer/synthesizer.C:654
+#: plugins/synthesizer/synthesizer.C:659
 msgid "Ctrl or Shift to select multiple notes."
 msgstr "Ctrl o Mayús para seleccionar varias notas."
 
 msgid "Ctrl or Shift to select multiple notes."
 msgstr "Ctrl o Mayús para seleccionar varias notas."
 
+#: plugins/synthesizer/synthesizer.C:1831
+msgid "Powers of 1.4"
+msgstr "Potencias de 1.4"
+
+#: plugins/synthesizer/synthesizer.C:1853
+msgid "Powers of 2"
+msgstr "Potencias de 2"
+
+#: plugins/synthesizer/synthesizer.C:1877
+msgid "Minimum"
+msgstr "Minimo"
+
 #: plugins/theme_blond/blondtheme.C:65
 msgid "Blond"
 #: plugins/theme_blond/blondtheme.C:65
 msgid "Blond"
-msgstr "Blond"
+msgstr "Rubia"
 
 #: plugins/theme_blond_cv/blondcvtheme.C:62
 msgid "Blond-cv"
 
 #: plugins/theme_blond_cv/blondcvtheme.C:62
 msgid "Blond-cv"
-msgstr "Blond-cv"
+msgstr "Rubia-cv"
 
 #: plugins/theme_blue_dot/bluedottheme.C:67
 msgid "Blue Dot"
 
 #: plugins/theme_blue_dot/bluedottheme.C:67
 msgid "Blue Dot"
-msgstr "Blue Dot"
+msgstr "Punto azul"
 
 #: plugins/theme_bright/brighttheme.C:61
 msgid "Bright"
 
 #: plugins/theme_bright/brighttheme.C:61
 msgid "Bright"
-msgstr "Bright"
+msgstr "Brillante"
 
 #: plugins/theme_cakewalk/cakewalk.C:49
 msgid "Cakewalk"
 
 #: plugins/theme_cakewalk/cakewalk.C:49
 msgid "Cakewalk"
@@ -12859,7 +13177,7 @@ msgstr "Color intenso"
 
 #: plugins/threshold/thresholdwindow.C:487
 msgid "Min:"
 
 #: plugins/threshold/thresholdwindow.C:487
 msgid "Min:"
-msgstr "Min:"
+msgstr "Mín:"
 
 #: plugins/timeavg/timeavg.C:119
 msgid "Time Average"
 
 #: plugins/timeavg/timeavg.C:119
 msgid "Time Average"
@@ -13011,7 +13329,7 @@ msgstr "TitleMain::cargar_freetype_face %s fracasado.\n"
 
 #: plugins/titler/titler.C:2330
 msgid "No motion"
 
 #: plugins/titler/titler.C:2330
 msgid "No motion"
-msgstr "Ningún movimiento"
+msgstr "Ningúna"
 
 #: plugins/titler/titler.C:2331
 msgid "Bottom to top"
 
 #: plugins/titler/titler.C:2331
 msgid "Bottom to top"
@@ -13078,8 +13396,8 @@ msgid "Font:"
 msgstr "Fuente:"
 
 #: plugins/titler/titlerwindow.C:248
 msgstr "Fuente:"
 
 #: plugins/titler/titlerwindow.C:248
-msgid "Pitch:"
-msgstr "Pitch:"
+msgid "Line Pitch:"
+msgstr "Interlineado:"
 
 #: plugins/titler/titlerwindow.C:255
 msgid "Style:"
 
 #: plugins/titler/titlerwindow.C:255
 msgid "Style:"
@@ -13091,19 +13409,19 @@ msgstr "Justificar:"
 
 #: plugins/titler/titlerwindow.C:317
 msgid "Motion:"
 
 #: plugins/titler/titlerwindow.C:317
 msgid "Motion:"
-msgstr "Movimiento:"
+msgstr "Animación:"
 
 #: plugins/titler/titlerwindow.C:324
 msgid "Drop shadow:"
 
 #: plugins/titler/titlerwindow.C:324
 msgid "Drop shadow:"
-msgstr "Dibujar sombra:"
+msgstr "Sombra (Distancia):"
 
 #: plugins/titler/titlerwindow.C:331
 msgid "Fade in (sec):"
 
 #: plugins/titler/titlerwindow.C:331
 msgid "Fade in (sec):"
-msgstr "Difuminado hacia dentro (seg):"
+msgstr "Fundido de Entrada (seg):"
 
 #: plugins/titler/titlerwindow.C:337
 msgid "Fade out (sec):"
 
 #: plugins/titler/titlerwindow.C:337
 msgid "Fade out (sec):"
-msgstr "Difuminado hacia fuera (seg):"
+msgstr "Fundido de Salida (seg):"
 
 #: plugins/titler/titlerwindow.C:356 plugins/titler/titlerwindow.C:360
 msgid "Outline:"
 
 #: plugins/titler/titlerwindow.C:356 plugins/titler/titlerwindow.C:360
 msgid "Outline:"
@@ -13111,11 +13429,11 @@ msgstr "Contorno:"
 
 #: plugins/titler/titlerwindow.C:366
 msgid "Stroker:"
 
 #: plugins/titler/titlerwindow.C:366
 msgid "Stroker:"
-msgstr "Acariciador:"
+msgstr "Engrosar:"
 
 #: plugins/titler/titlerwindow.C:392
 msgid "background media"
 
 #: plugins/titler/titlerwindow.C:392
 msgid "background media"
-msgstr "medios de fondo"
+msgstr "medios para el fondo"
 
 #: plugins/titler/titlerwindow.C:392
 msgid "Select background media path"
 
 #: plugins/titler/titlerwindow.C:392
 msgid "Select background media path"
@@ -13139,7 +13457,7 @@ msgstr "Color del contorno"
 
 #: plugins/titler/titlerwindow.C:853
 msgid "Stamp timecode"
 
 #: plugins/titler/titlerwindow.C:853
 msgid "Stamp timecode"
-msgstr "Estampar el timecode"
+msgstr "Mostrar Código de Tiempo"
 
 #: plugins/titler/titlerwindow.C:1009
 #, c-format
 
 #: plugins/titler/titlerwindow.C:1009
 #, c-format
@@ -13241,7 +13559,7 @@ msgstr "Revisión diente de sierra"
 
 #: plugins/unsharp/unsharp.C:126
 msgid "Unsharp"
 
 #: plugins/unsharp/unsharp.C:126
 msgid "Unsharp"
-msgstr "Desenfoque"
+msgstr "Enfocar"
 
 #: plugins/videoscope/videoscope.C:238
 msgid "VideoScope"
 
 #: plugins/videoscope/videoscope.C:238
 msgid "VideoScope"
@@ -13365,4 +13683,12 @@ msgstr "Y Ampliación:"
 
 #: plugins/zoomblur/zoomblur.C:352
 msgid "Zoom Blur"
 
 #: plugins/zoomblur/zoomblur.C:352
 msgid "Zoom Blur"
-msgstr "Difuminado Zoom"
+msgstr "Desenfoque Zoom"
+
+#: cinelerra/editpopup.C:216
+msgid "editpopup#Mute"
+msgstr "Cortar dejando el hueco"
+
+#: cinelerra/assetpopup.C:423
+msgid "assetpopup#Paste"
+msgstr "Insertar"
diff --git a/cinelerra-5.1/thirdparty/src/libxcb.patch1 b/cinelerra-5.1/thirdparty/src/libxcb.patch1
new file mode 100755 (executable)
index 0000000..4a30290
--- /dev/null
@@ -0,0 +1,43 @@
+diff --git a/configure.ac b/configure.ac
+index f880918..66e24a0 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -51,7 +51,7 @@ AC_SUBST(HTML_CHECK_RESULT)
+ # Checks for pkg-config packages
+ PKG_CHECK_MODULES(XCBPROTO, xcb-proto >= 1.13)
+-NEEDED="pthread-stubs xau >= 0.99.2"
++NEEDED="xau >= 0.99.2"
+ PKG_CHECK_MODULES(NEEDED, $NEEDED)
+ have_xdmcp="no"
+diff --git a/src/xcb_in.c b/src/xcb_in.c
+index 73209e0..0dd7314 100644
+--- a/src/xcb_in.c
++++ b/src/xcb_in.c
+@@ -966,7 +966,7 @@ void _xcb_in_replies_done(xcb_connection_t *c)
+ int _xcb_in_read(xcb_connection_t *c)
+ {
+-    int n;
++    int n, err;
+ #if HAVE_SENDMSG
+     struct iovec    iov = {
+@@ -999,6 +999,7 @@ int _xcb_in_read(xcb_connection_t *c)
+ #else
+     n = recv(c->fd, c->in.queue + c->in.queue_len, sizeof(c->in.queue) - c->in.queue_len, 0);
+ #endif
++    err = errno;
+     if(n > 0) {
+ #if HAVE_SENDMSG
+         struct cmsghdr *hdr;
+@@ -1039,7 +1040,7 @@ int _xcb_in_read(xcb_connection_t *c)
+     }
+ #endif
+ #ifndef _WIN32
+-    if((n > 0) || (n < 0 && errno == EAGAIN))
++    if((n > 0) || (n < 0 && (err == EAGAIN || err == ENOENT || err == 0)))
+ #else
+     if((n > 0) || (n < 0 && WSAGetLastError() == WSAEWOULDBLOCK))
+ #endif /* !_WIN32 */