dynamic keyframes, textbox rework, andrea ffmpeg.opts, perpetual chkpt undo, lv2...
authorGood Guy <good1.2guy@gmail.com>
Sun, 7 Oct 2018 21:09:06 +0000 (15:09 -0600)
committerGood Guy <good1.2guy@gmail.com>
Sun, 7 Oct 2018 21:09:06 +0000 (15:09 -0600)
145 files changed:
cinelerra-5.1/cinelerra/batchrender.C
cinelerra-5.1/cinelerra/binfolder.C
cinelerra-5.1/cinelerra/filexml.C
cinelerra-5.1/cinelerra/filexml.h
cinelerra-5.1/cinelerra/keyframe.C
cinelerra-5.1/cinelerra/keyframe.h
cinelerra-5.1/cinelerra/localsession.C
cinelerra-5.1/cinelerra/maskauto.C
cinelerra-5.1/cinelerra/mwindow.C
cinelerra-5.1/cinelerra/pluginaclientlad.C
cinelerra-5.1/cinelerra/pluginclient.C
cinelerra-5.1/cinelerra/pluginfclient.C
cinelerra-5.1/cinelerra/pluginlv2client.C
cinelerra-5.1/cinelerra/pluginlv2gui.C
cinelerra-5.1/cinelerra/presets.C
cinelerra-5.1/cinelerra/track.C
cinelerra-5.1/ffmpeg/plugin.opts
cinelerra-5.1/guicast/bctextbox.C
cinelerra-5.1/guicast/bctextbox.h
cinelerra-5.1/lv2_blacklist.txt
cinelerra-5.1/plugins/1080to480/1080to480.C
cinelerra-5.1/plugins/1080to540/1080to540.C
cinelerra-5.1/plugins/720to480/720to480.C
cinelerra-5.1/plugins/C41/c41.C
cinelerra-5.1/plugins/aging/aging.C
cinelerra-5.1/plugins/audioscope/audioscope.C
cinelerra-5.1/plugins/bandslide/bandslide.C
cinelerra-5.1/plugins/bandwipe/bandwipe.C
cinelerra-5.1/plugins/bluebanana/bluebanana.C
cinelerra-5.1/plugins/blur/blur.C
cinelerra-5.1/plugins/brightness/brightness.C
cinelerra-5.1/plugins/chromakey/chromakey.C
cinelerra-5.1/plugins/chromakeyhsv/chromakey.C
cinelerra-5.1/plugins/color3way/color3way.C
cinelerra-5.1/plugins/colorbalance/colorbalance.C
cinelerra-5.1/plugins/compressor/compressor.C
cinelerra-5.1/plugins/crikey/crikey.C
cinelerra-5.1/plugins/decimate/decimate.C
cinelerra-5.1/plugins/deinterlace-cv/deinterlace-cv.C
cinelerra-5.1/plugins/deinterlace/deinterlace.C
cinelerra-5.1/plugins/delayaudio/delayaudio.C
cinelerra-5.1/plugins/delayvideo/delayvideo.C
cinelerra-5.1/plugins/denoise/denoise.C
cinelerra-5.1/plugins/denoisefft/denoisefft.C
cinelerra-5.1/plugins/denoisemjpeg/denoisemjpeg.C
cinelerra-5.1/plugins/denoiseseltempavg/seltempavg.C
cinelerra-5.1/plugins/denoisevideo/denoisevideo.C
cinelerra-5.1/plugins/descratch/descratch.C
cinelerra-5.1/plugins/despike/despike.C
cinelerra-5.1/plugins/diffkey/diffkey.C
cinelerra-5.1/plugins/downsample/downsample.C
cinelerra-5.1/plugins/echo/echo.C
cinelerra-5.1/plugins/echocancel/echocancel.C
cinelerra-5.1/plugins/edge/edge.C
cinelerra-5.1/plugins/fieldframe/fieldframe.C
cinelerra-5.1/plugins/findobj/findobj.C
cinelerra-5.1/plugins/flip/flip.C
cinelerra-5.1/plugins/flowobj/flowobj.C
cinelerra-5.1/plugins/framefield/framefield.C
cinelerra-5.1/plugins/freeverb/freeverb.C
cinelerra-5.1/plugins/freezeframe/freezeframe.C
cinelerra-5.1/plugins/gaborobj/gaborobj.C
cinelerra-5.1/plugins/gain/gain.C
cinelerra-5.1/plugins/gamma/gamma.C
cinelerra-5.1/plugins/gradient/gradient.C
cinelerra-5.1/plugins/graphic/graphic.C
cinelerra-5.1/plugins/greycstoration/greycstorationplugin.C
cinelerra-5.1/plugins/histeq/histeq.C
cinelerra-5.1/plugins/histogram/histogram.C
cinelerra-5.1/plugins/histogram_bezier/bistogram.C
cinelerra-5.1/plugins/histogram_bezier/bistogramwindow.C
cinelerra-5.1/plugins/huesaturation/huesaturation.C
cinelerra-5.1/plugins/interpolate/interpolate.C
cinelerra-5.1/plugins/interpolatevideo/interpolatevideo.C
cinelerra-5.1/plugins/invertvideo/invert.C
cinelerra-5.1/plugins/irissquare/irissquare.C
cinelerra-5.1/plugins/ivtc/ivtc.C
cinelerra-5.1/plugins/lens/lens.C
cinelerra-5.1/plugins/level/leveleffect.C
cinelerra-5.1/plugins/linearblur/linearblur.C
cinelerra-5.1/plugins/livevideo/livevideo.C
cinelerra-5.1/plugins/loopaudio/loopaudio.C
cinelerra-5.1/plugins/loopvideo/loopvideo.C
cinelerra-5.1/plugins/motion-cv/motion-cv.C
cinelerra-5.1/plugins/motion-hv/motion-hv.C
cinelerra-5.1/plugins/motion/motion.C
cinelerra-5.1/plugins/motion2point/motion.C
cinelerra-5.1/plugins/motion51/motion51.C
cinelerra-5.1/plugins/motionblur/motionblur.C
cinelerra-5.1/plugins/moveobj/moveobj.C
cinelerra-5.1/plugins/oilpainting/oil.C
cinelerra-5.1/plugins/overlay/overlay.C
cinelerra-5.1/plugins/overlayaudio/overlayaudio.C
cinelerra-5.1/plugins/parametric/parametric.C
cinelerra-5.1/plugins/perspective/perspective.C
cinelerra-5.1/plugins/photoscale/photoscale.C
cinelerra-5.1/plugins/piano/piano.C
cinelerra-5.1/plugins/pitch/pitch.C
cinelerra-5.1/plugins/polar/polar.C
cinelerra-5.1/plugins/puzzleobj/puzzleobj.C
cinelerra-5.1/plugins/radialblur/radialblur.C
cinelerra-5.1/plugins/reframert/reframert.C
cinelerra-5.1/plugins/removegaps/removegaps.C
cinelerra-5.1/plugins/reroute/reroute.C
cinelerra-5.1/plugins/resamplert/resamplert.C
cinelerra-5.1/plugins/reverb/reverb.C
cinelerra-5.1/plugins/reverseaudio/reverseaudio.C
cinelerra-5.1/plugins/reversevideo/reversevideo.C
cinelerra-5.1/plugins/rgb601/rgb601.C
cinelerra-5.1/plugins/rgbshift/rgbshift.C
cinelerra-5.1/plugins/rotate/rotate.C
cinelerra-5.1/plugins/rumbler/rumbler.C
cinelerra-5.1/plugins/scale/scale.C
cinelerra-5.1/plugins/scaleratio/scaleratio.C
cinelerra-5.1/plugins/shapewipe/shapewipe.C
cinelerra-5.1/plugins/sharpen/sharpen.C
cinelerra-5.1/plugins/shiftinterlace/shiftinterlace.C
cinelerra-5.1/plugins/slide/slide.C
cinelerra-5.1/plugins/spectrogram/spectrogram.C
cinelerra-5.1/plugins/spherecam/spherecam.C
cinelerra-5.1/plugins/stylizeobj/stylizeobj.C
cinelerra-5.1/plugins/svg/svg.C
cinelerra-5.1/plugins/swapchannels/swapchannels.C
cinelerra-5.1/plugins/swapframes/swapframes.C
cinelerra-5.1/plugins/synthesizer/synthesizer.C
cinelerra-5.1/plugins/threshold/threshold.C
cinelerra-5.1/plugins/timeavg/timeavg.C
cinelerra-5.1/plugins/timefront/timefront.C
cinelerra-5.1/plugins/timestretchrt/timestretchrt.C
cinelerra-5.1/plugins/titler/titler.C
cinelerra-5.1/plugins/titler/titler.h
cinelerra-5.1/plugins/titler/titlerwindow.C
cinelerra-5.1/plugins/titler/titlerwindow.h
cinelerra-5.1/plugins/translate/translate.C
cinelerra-5.1/plugins/unsharp/unsharp.C
cinelerra-5.1/plugins/videoscope/videoscope.C
cinelerra-5.1/plugins/vocoder/vocoder.C
cinelerra-5.1/plugins/wave/wave.C
cinelerra-5.1/plugins/whirl/whirl.C
cinelerra-5.1/plugins/wipe/wipe.C
cinelerra-5.1/plugins/yuv/yuv.C
cinelerra-5.1/plugins/yuv411/yuv411.C
cinelerra-5.1/plugins/yuvshift/yuvshift.C
cinelerra-5.1/plugins/zoom/zoom.C
cinelerra-5.1/plugins/zoomblur/zoomblur.C

index 4f685c285357de71bc0224ca23989c52080362b8..e75c71093253ea7c219b7954d1c66b1fd53ded77 100644 (file)
@@ -404,7 +404,9 @@ int BatchRenderThread::test_edl_files()
                                char *bfr = new char[sz+1];
                                int64_t len = fread(bfr, 1, sz+1, fp);
                                if( len == sz ) {
-                                       FileXML file;  file.set_shared_input(bfr, len);
+                                       FileXML file;
+                                       XMLBuffer data(bfr, len, 0);
+                                       file.set_shared_input(&data);
                                        EDL *edl = new EDL; edl->create_objects();
                                        edl->load_xml(&file, LOAD_ALL);
                                        double pos = edl->equivalent_output(mwindow->edl);
index b5d4b9f8147d003c9c4dec8ecce7a0c09453fd8a..dfe101cdb5eb6d295aefe061a2801f6c0bc2cba4 100644 (file)
@@ -522,14 +522,14 @@ int BinFolderFilter::load_xml(FileXML *file)
        int enabled_type = file->tag.get_property("ENABLED", FOLDER_ENABLED_AND);
        int op_type = file->tag.get_property("OP", FOLDER_OP_MATCHES);
        int target_type = file->tag.get_property("TARGET", FOLDER_TARGET_PATTERNS);
-       char data[0x40000];
-       file->read_text_until("/FILTER", data, sizeof(data), 0);
+       XMLBuffer data;
+       file->read_text_until("/FILTER", &data, 0);
        update_enabled(enabled_type);
        update_target(target_type);
        update_op(op_type);
        target->load_xml(file);
        if( target->type == FOLDER_TARGET_PATTERNS )
-               ((BinFolderTargetPatterns *)target)->update(data);
+               ((BinFolderTargetPatterns *)target)->update(data.cstr());
        return 0;
 }
 
index f474317853562554b3a36b9429adc3352ff90bc3..8914ff4498b29412500936913104e40740fd8aee 100644 (file)
@@ -109,6 +109,19 @@ int XMLBuffer::read(char *bp, int len)
        return len;
 }
 
+void XMLBuffer::copy_from(XMLBuffer *xbuf)
+{
+       if( bsz != xbuf->bsz ) { delete [] bfr;  bfr = 0; }
+       if( !bfr ) bfr = new unsigned char[bsz = xbuf->bsz];
+       lmt = bfr + bsz;
+       long ilen = xbuf->otell(), olen = xbuf->itell();
+       inp = pos(ilen);
+       outp = pos(olen);
+       if( ilen > 0 )
+               memmove(bfr, xbuf->bfr, ilen);
+       destroy = xbuf->destroy;
+}
+
 
 // Precision in base 10
 // for float is 6 significant figures
@@ -363,11 +376,12 @@ FileXML::FileXML(int coded)
        output_length = 0;
        buffer = new XMLBuffer();
        set_coding(coded);
+       shared = 0;
 }
 
 FileXML::~FileXML()
 {
-       delete buffer;
+       if( !shared ) delete buffer;
        delete [] output;
 }
 
@@ -440,7 +454,7 @@ char* FileXML::get_data()
 }
 char* FileXML::string()
 {
-       return (char *)buffer->str();
+       return (char *)buffer->cstr();
 }
 
 long FileXML::length()
@@ -494,30 +508,29 @@ int FileXML::skip_tag()
        return 1;
 }
 
-int FileXML::read_data_until(const char *tag_end, char *out, int len, int skip)
+int FileXML::read_data_until(const char *tag_end, XMLBuffer *xbuf, int skip)
 {
        long ipos = buffer->itell();
-       int opos = 0, pos = -1;
-       int ch = buffer->next();
-       for( int olen=len-1; ch>=0 && opos<olen; ch=buffer->next() ) {
+       int pos = -1;
+       for( int ch=buffer->next(); ch>=0; ch=buffer->next() ) {
                if( pos < 0 ) { // looking for next tag
                        if( ch == left_delm ) {
                                ipos = buffer->itell()-1;
                                pos = 0;
                        }
                        else
-                               out[opos++] = ch;
+                               xbuf->next(ch);
                        continue;
                }
                // check for end of match
                if( !tag_end[pos] && ch == right_delm ) break;
                // if mismatched, copy prefix to out
                if( tag_end[pos] != ch ) {
-                       out[opos++] = left_delm;
-                       for( int i=0; i<pos && opos<olen; ++i )
-                               out[opos++] = tag_end[i];
-                       if( opos < olen ) out[opos++] = ch;
+                       xbuf->next(left_delm);
+                       for( int i=0; i<pos; ++i )
+                               xbuf->next(tag_end[i]);
                        pos = -1;
+                       xbuf->next(ch);
                        continue;
                }
                ++pos;
@@ -525,14 +538,14 @@ int FileXML::read_data_until(const char *tag_end, char *out, int len, int skip)
 // if end tag is reached, pos is left on the < of the end tag
        if( !skip && pos >= 0 && !tag_end[pos] )
                buffer->iseek(ipos);
-       return opos;
+       return xbuf->otell();
 }
 
-int FileXML::read_text_until(const char *tag_end, char *out, int len, int skip)
+int FileXML::read_text_until(const char *tag_end, XMLBuffer *xbuf, int skip)
 {
-       char data[len+1];
-       int opos = read_data_until(tag_end, data, len, skip);
-       decode(out, data, opos);
+       int len = read_data_until(tag_end, xbuf, skip);
+       char *cp = xbuf->cstr();
+       decode(cp, cp, len);
        return 0;
 }
 
@@ -615,30 +628,31 @@ int FileXML::get_coding()
        return coded;
 }
 
-int FileXML::set_shared_input(char *shared_string, long avail, int coded)
+int FileXML::set_shared_input(XMLBuffer *xbuf)
 {
        strcpy(this->filename, "");
        delete buffer;
-       buffer = new XMLBuffer(shared_string, avail, 0);
+       buffer = xbuf;
+       xbuf->iseek(0);
        set_coding(coded);
-        return 0;
+       shared = 1;
+       return 0;
 }
 
-int FileXML::set_shared_output(char *shared_string, long avail, int coded)
+int FileXML::set_shared_output(XMLBuffer *xbuf)
 {
        strcpy(this->filename, "");
        delete buffer;
-       buffer = new XMLBuffer(avail, shared_string, 0);
+       buffer = xbuf;
+       xbuf->oseek(0);
        set_coding(coded);
-        return 0;
+       shared = 1;
+       return 0;
 }
 
 
-
 // ================================ XML tag
 
-
-
 int XMLTag::title_is(const char *tp)
 {
        return !strcasecmp(title, tp) ? 1 : 0;
@@ -751,7 +765,8 @@ long XMLBuffer::encoded_length(const char *sp, int n)
 char *XMLBuffer::copy_data(char *bp, const char *sp, int n)
 {
        int len = n < 0 ? strlen(sp) : n;
-       memmove(bp,sp,len);
+       if( bp != sp )
+               memmove(bp,sp,len);
        bp[len] = 0;
        return bp;
 }
index af45e3088bd8adde783af10b37ed613fae204d14..70950384a5bda391a42dc20f0ad1c25c64d3c4b3 100644 (file)
@@ -27,6 +27,7 @@
 #include <limits.h>
 
 #include "arraylist.h"
+#include "keyframe.inc"
 #include "filexml.inc"
 #include "sizes.h"
 
@@ -39,6 +40,7 @@ class XMLBuffer
        int destroy;
 
        int demand(long len);
+       friend class KeyFrame;
 public:
        XMLBuffer(long buf_size=0x1000, long max_size=LONG_MAX, int del=1);
        XMLBuffer(long buf_size, char *buf, int del=0); // writing
@@ -49,10 +51,11 @@ public:
        long itell() { return outp - bfr; }
        void oseek(long pos) { inp = bfr + pos; }
        void iseek(long pos) { outp = bfr + pos; }
-       unsigned char *pos(long ofs=0) { return bfr+ofs; }
-       unsigned char *str() { if( inp < lmt ) *inp = 0; return bfr; }
+       unsigned char *pos(long ofs=0) { return bfr+ofs; }
+       char *cstr() { if( demand(otell()+1) ) *inp = 0; return (char*)bfr; }
        int read(char *bp, int n);
        int write(const char *bp, int n);
+       void copy_from(XMLBuffer *xbfr);
 
        int cur()  { return outp>=inp ? -1 : *outp; }
        int next() { return outp>=inp ? -1 : *outp++; }
@@ -129,9 +132,9 @@ public:
        int append_data(const char *text);
        int append_data(const char *text, long len);
 
-       charread_text();
-       int read_data_until(const char *tag_end, char *out, int len, int skip=0);
-       int read_text_until(const char *tag_end, char *out, int len, int skip=0);
+       char *read_text();
+       int read_data_until(const char *tag_end, XMLBuffer *xbfr, int skip=0);
+       int read_text_until(const char *tag_end, XMLBuffer *xbfr, int skip=0);
        int read_tag();
        int skip_tag();
        int write_to_file(const char *filename);
@@ -142,17 +145,18 @@ public:
        char *(*encode)(char *bp, const char *sp, int n);
        long (*coded_length)(const char *sp, int n);
 
-       int set_shared_input(char *shared_string, long avail, int coded=1);
-       int set_shared_output(char *shared_string, long avail, int coded=1);
        void set_coding(int coding);
        int get_coding();
+       int set_shared_input(XMLBuffer *xbfr);
+       int set_shared_output(XMLBuffer *xbfr);
+
        int rewind();
        char *get_data();
        char *string();
        long length();
 
        XMLBuffer *buffer;
-       int coded;
+       int coded, shared;
 
        XMLTag tag;
        long output_length;
index cdeebd642cf6bce2fcb6d07dcb920a41e53afba3..fd7eaf847bce9fe13a55f0f26e36aa30b6e6bc23 100644 (file)
 KeyFrame::KeyFrame()
  : Auto()
 {
-       data[0] = 0;
+       xbuf = new XMLBuffer();
 }
 
 KeyFrame::KeyFrame(EDL *edl, KeyFrames *autos)
  : Auto(edl, (Autos*)autos)
 {
-       data[0] = 0;
+       xbuf = new XMLBuffer();
 }
 
 KeyFrame::~KeyFrame()
 {
+       delete xbuf;
 }
 
 void KeyFrame::load(FileXML *file)
@@ -53,15 +54,12 @@ void KeyFrame::load(FileXML *file)
 // Shouldn't be necessary
 //     position = file->tag.get_property((char*)"POSITION", position);
 //printf("KeyFrame::load 1\n");
-
-       int len = file->read_data_until((char*)"/KEYFRAME", data, MESSAGESIZE-1, 1);
-       data[len] = 0;
-//printf("KeyFrame::load 2 data=\n%s\nend of data\n", data);
+       xbuf->iseek(0);  xbuf->oseek(0);
+       file->read_data_until((char*)"/KEYFRAME", xbuf, 1);
 }
 
 void KeyFrame::copy(int64_t start, int64_t end, FileXML *file, int default_auto)
 {
-//printf("KeyFrame::copy 1 %d\n%s\n", position - start, data);
        file->tag.set_title((char*)"KEYFRAME");
        if(default_auto)
                file->tag.set_property((char*)"POSITION", 0);
@@ -73,10 +71,8 @@ void KeyFrame::copy(int64_t start, int64_t end, FileXML *file, int default_auto)
        file->append_tag();
 // Can't put newlines in because these would be reimported and resaved along
 // with new newlines.
-//     file->append_newline();
-
+       char *data = (char*)xbuf->pos(0);
        file->append_data(data, strlen(data));
-//     file->append_newline();
 
        file->tag.set_title((char*)"/KEYFRAME");
        file->append_tag();
@@ -89,156 +85,102 @@ void KeyFrame::copy_from(Auto *that)
        copy_from((KeyFrame*)that);
 }
 
-void KeyFrame::copy_from(KeyFrame *that)
+void KeyFrame::copy_data(KeyFrame *src)
 {
-       Auto::copy_from(that);
-       KeyFrame *keyframe = (KeyFrame*)that;
-       strcpy(data, keyframe->data);
-       position = keyframe->position;
+       xbuf->copy_from(src->xbuf);
 }
 
-void KeyFrame::copy_data(KeyFrame *src)
+void KeyFrame::copy_from(KeyFrame *that)
 {
-       strcpy(data, src->data);
+       Auto::copy_from(that);
+       copy_data(that);
+       position = that->position;
 }
 
 int KeyFrame::identical(KeyFrame *src)
 {
-       return !strcasecmp(src->data, data);
+       return !strcasecmp(xbuf->cstr(), src->xbuf->cstr());
 }
 
 void KeyFrame::get_contents(BC_Hash *ptr, char **text, char **extra)
 {
        FileXML input;
-       input.set_shared_input(data, strlen(data));
-       int result = 0;
-       char *this_text = 0;
-       char *this_extra = 0;
-       while(!result)
-       {
-               result = input.read_tag();
-               if(!result)
-               {
-                       for(int i = 0; i < input.tag.properties.size(); i++)
-                       {
-                               const char *key = input.tag.get_property_text(i);
-                               const char *value = input.tag.get_property(key);
-                               ptr->update(key, value);
-                       }
+       input.set_shared_input(xbuf);
+       char *this_text = 0, *this_extra = 0;
+       if( !input.read_tag() ) {
+               for( int i=0; i<input.tag.properties.size(); ++i ) {
+                       const char *key = input.tag.get_property_text(i);
+                       const char *value = input.tag.get_property(key);
+                       ptr->update(key, value);
+               }
 
 // Read any text after tag
-                       this_text = input.read_text();
-                       (*text) = cstrdup(this_text);
+               this_text = input.read_text();
+               (*text) = cstrdup(this_text);
 
 // Read remaining data
-                       this_extra = input.get_data();
-                       (*extra) = cstrdup(this_extra);
-                       break;
-               }
+               this_extra = input.get_data();
+               (*extra) = cstrdup(this_extra);
        }
 }
 
 void KeyFrame::update_parameter(BC_Hash *params,
        const char *text, const char *extra)
 {
-       FileXML output;
-       FileXML input;
-       input.set_shared_input(get_data(), strlen(get_data()));
-       int result = 0;
        BC_Hash this_params;
-       char *this_text = 0;
-       char *this_extra = 0;
-       int got_it = 0;
-
-// printf("KeyFrame::update_parameter %d %p %p %p \n",
-// __LINE__,
-// params,
-// text,
-// extra);
-
-
+       char *this_text = 0, *this_extra = 0;
        get_contents(&this_params, &this_text, &this_extra);
 
-
-// printf("KeyFrame::update_parameter %d params=%p\n", __LINE__, params);
-// if(params) params->dump();
-// printf("KeyFrame::update_parameter %d\n", __LINE__);
-// this_params.dump();
-
-// Get first tag
-       while(!result)
-       {
-               result = input.read_tag();
-               if(!result)
-               {
-// Replicate first tag
-                       output.tag.set_title(input.tag.get_title());
+       FileXML input, output;
+       input.set_shared_input(xbuf);
+       if( !input.read_tag() ) {
+// Replicate tag
+               output.tag.set_title(input.tag.get_title());
 
 // Get each parameter from this keyframe
-                       for(int i = 0; i < this_params.size(); i++)
-                       {
-                               const char *key = this_params.get_key(i);
-                               const char *value = this_params.get_value(i);
-
+               for( int i=0; i<this_params.size(); ++i ) {
+                       const char *key = this_params.get_key(i);
+                       const char *value = this_params.get_value(i);
 // Get new value from the params argument
-                               got_it = 1;
-                               if(params)
-                               {
-                                       got_it = 0;
-                                       for(int j = 0; j < params->size(); j++)
-                                       {
-                                               if(!strcmp(params->get_key(j), key))
-                                               {
-                                                       got_it = 1;
-                                                       value = params->get_value(j);
-                                                       break;
-                                               }
+                       if( params ) {
+                               for( int j=0; j<params->size(); ++j ) {
+                                       if( !strcmp(params->get_key(j), key) ) {
+                                               value = params->get_value(j);
+                                               break;
                                        }
                                }
-
-// Set parameter in output.
-                               output.tag.set_property(key, value);
                        }
 
+                       output.tag.set_property(key, value);
+               }
+
 // Get each parameter from params argument
-                       if(params)
-                       {
-                               for(int i = 0; i < params->size(); i++)
-                               {
-                                       const char *key = params->get_key(i);
-//printf("KeyFrame::update_parameter %d %s\n", __LINE__, key);
-
-                                       got_it = 0;
-                                       for(int j = 0; j < this_params.size(); j++)
-                                       {
-                                               if(!strcmp(this_params.get_key(j), key))
-                                               {
-                                                       got_it = 1;
-                                                       break;
-                                               }
+               if( params ) {
+                       for( int i=0; i<params->size(); ++i ) {
+                               const char *key = params->get_key(i);
+                               int got_it = 0;
+                               for( int j=0; j<this_params.size(); ++j ) {
+                                       if( !strcmp(this_params.get_key(j), key) ) {
+                                               got_it = 1;
+                                               break;
                                        }
-//printf("KeyFrame::update_parameter %d %s\n", __LINE__, key);
+                               }
 
 // If it wasn't found in output, set new parameter in output.
-                                       if(!got_it)
-                                       {
-                                               output.tag.set_property(key, params->get_value(i));
-//printf("KeyFrame::update_parameter %d %s\n", __LINE__, key);
-                                       }
+                               if( !got_it ) {
+                                       output.tag.set_property(key, params->get_value(i));
                                }
                        }
+               }
 
-// Append parameters to output
-                       output.append_tag();
+               output.append_tag();
 // Write anonymous text & duplicate the rest
-                       output.append_text(text ? text : this_text);
-// Append remaining previous data
-                       output.append_data(extra ? extra : this_extra);
+               output.append_text(text ? text : this_text);
+               output.append_data(extra ? extra : this_extra);
+               output.terminate_string();
 // Move output to input
-                       output.terminate_string();
-                       strcpy(this->data, output.string());
-                       break;
-               }
+               xbuf->oseek(0);
+               xbuf->write(output.string(), output.length());
        }
 
        delete [] this_text;
@@ -294,19 +236,21 @@ int KeyFrame::operator==(KeyFrame &that)
        return identical(&that);
 }
 
-char* KeyFrame::get_data()
+char *KeyFrame::get_data(int64_t sz)
 {
-       return data;
+       if( sz >= 0 ) xbuf->demand(sz);
+       return xbuf->cstr();
 }
 
 void KeyFrame::set_data(char *data)
 {
-       strcpy(this->data, data);
+       xbuf->oseek(0);
+       xbuf->write(data, strlen(data));
 }
 
 void KeyFrame::dump(FILE *fp)
 {
        fprintf(fp,"     position: %jd\n", position);
-       fprintf(fp,"     data: %s\n", data);
+       fprintf(fp,"     data: %s\n", xbuf->cstr());
 }
 
index 29cdb3c5f8b30d7771c4e18969d3817f029a900f..0d2f4804600fc113ef45a22a5ebc869aa861e881 100644 (file)
@@ -54,13 +54,10 @@ public:
        int identical(KeyFrame *src);
 // Generate pointers to parameters which are different than *src.
 // User must free nonzero return arguments.
-       void get_diff(KeyFrame *src,
-               BC_Hash **params,
-               char **text,
-               char **extra);
-       void set_data(char *data);
-       char* get_data();
+       void get_diff(KeyFrame *src, BC_Hash **params, char **text, char **extra);
 
+       void set_data(char *data);
+       char* get_data(int64_t sz=-1);
 // Get parameters in a hash table,
 // the anonymous text in a newly allocated string.
 // extra text in a newly allocated string
@@ -68,8 +65,7 @@ public:
 // Update a single parameter or the anonymous text depending on which argument is nonzero
        void update_parameter(BC_Hash *params, const char *text, const char *extra);
 
-private:
-       char data[MESSAGESIZE];
+       XMLBuffer *xbuf;
 };
 
 #endif
index bb95fafa1c40aeadb6739bb8dc8d491005e54d80..0ce537e25c2b78083c78656579b0cd63aa6225e2 100644 (file)
@@ -329,8 +329,10 @@ void LocalSession::load_xml(FileXML *file, unsigned long load_flags)
        while( !file->read_tag() ) {
                if( file->tag.title_is("/LOCALSESSION") ) break;
                if( file->tag.title_is("CLIP_NOTES") ) {
-                       file->read_text_until("/CLIP_NOTES",
-                               clip_notes, sizeof(clip_notes)-1, 1);
+                       XMLBuffer notes;
+                       file->read_text_until("/CLIP_NOTES", &notes, 1);
+                       memset(clip_notes, 0, sizeof(clip_notes));
+                       strncpy(clip_notes, notes.cstr(), sizeof(clip_notes)-1);
                }
        }
 }
index a4b64a849ad537ca796116d353ea9be937581123..1b1f9600e665033da139e1c90be7b9bf44363ee9 100644 (file)
@@ -123,12 +123,11 @@ void SubMask::load(FileXML *file)
                        else
                        if(file->tag.title_is("POINT"))
                        {
-                               char string[BCTEXTLEN];
-                               string[0] = 0;
-                               file->read_text_until("/POINT", string, BCTEXTLEN);
+                               XMLBuffer data;
+                               file->read_text_until("/POINT", &data);
 
                                MaskPoint *point = new MaskPoint;
-                               char *ptr = string;
+                               char *ptr = data.cstr();
 //printf("MaskAuto::load 1 %s\n", ptr);
 
                                point->x = atof(ptr);
index 71ff5f31688440ea8bfebd51b8a4987b52077204..8a33473c81a999c167953800ef8f569ebf9a427d 100644 (file)
@@ -3639,6 +3639,8 @@ void MWindow::load_backup()
 
 void MWindow::save_undo_data()
 {
+       undo->update_undo_before();
+       undo->update_undo_after(_("perpetual session"), LOAD_ALL);
        char perpetual_path[BCTEXTLEN];
        snprintf(perpetual_path, sizeof(perpetual_path), "%s/%s",
                File::get_config_path(), PERPETUAL_FILE);
index f1cbb45a317fa4dd82fa4fdb1cb655484878aa19..15ff05ed0e6ab8b3d542511c1dd45b3c5a2bfc93 100644 (file)
@@ -452,12 +452,11 @@ char* PluginAClientLAD::lad_to_upper(char *string, const char *input)
 
 void PluginAClientLAD::save_data(KeyFrame *keyframe)
 {
-       FileXML output;
-       char string[BCTEXTLEN];
        if( !config.port_data ) config.initialize(server);
-
+       FileXML output;
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
+       char string[BCTEXTLEN];
        output.tag.set_title(lad_to_upper(string, plugin_title()));
 
        const LADSPA_Descriptor *lad_desc = server->lad_descriptor;
@@ -481,14 +480,13 @@ void PluginAClientLAD::save_data(KeyFrame *keyframe)
 
 void PluginAClientLAD::read_data(KeyFrame *keyframe)
 {
-       FileXML input;
-       char string[BCTEXTLEN];
-
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
        if( !config.port_data ) config.initialize(server);
+       FileXML input;
+       input.set_shared_input(keyframe->xbuf);
 
        while(! input.read_tag() ) {
 //printf("PluginAClientLAD::read_data %s\n", input.tag.get_title());
+               char string[BCTEXTLEN];
                if(! input.tag.title_is(lad_to_upper(string, plugin_title())) ) continue;
                const LADSPA_Descriptor *lad_desc = server->lad_descriptor;
                const LADSPA_PortDescriptor *port_desc = lad_desc->PortDescriptors;
index 33aba8f34f691997fece6f33449ad92922b57145..0a690b2e673868d3e65700da5c323022f90abc91 100644 (file)
@@ -246,6 +246,7 @@ void PluginClient::hide_gui()
 //printf("PluginClient::hide_gui %d thread->window=%p\n", __LINE__, thread->window);
                thread->window->unlock_window();
 //printf("PluginClient::delete_thread %d\n", __LINE__);
+               thread->join();
        }
 }
 
@@ -547,39 +548,33 @@ void PluginClient::load_defaults_xml()
 //printf("PluginClient::load_defaults_xml %d %s\n", __LINE__, path);
 
        KeyFrame temp_keyframe;
-       FILE *fd = fopen(path, "r");
-       if(fd)
-       {
-               char *data = temp_keyframe.get_data();
-               int data_size = fread(data, 1, MESSAGESIZE-1, fd);
+       FILE *fp = fopen(path, "r");
+       if( fp ) {
+               struct stat st;  int fd = fileno(fp);
+               int64_t sz = !fstat(fd, &st) ? st.st_size : BCTEXTLEN;
+               char *data = temp_keyframe.get_data(sz+1);
+               int data_size = fread(data, 1, sz, fp);
                if( data_size < 0 ) data_size = 0;
-               if( data_size > 0 )
-               {
+               if( data_size > 0 ) {
 // Get window extents
                        int state = 0;
-                       for(int i = 0; i < data_size - 8; i++)
-                       {
-                               if(data[i] == '<') break;
-                               if(isdigit(data[i]))
-                               {
-                                       if(state == 0)
-                                       {
-                                               window_x = atoi(data + i);
-                                               state++;
-                                       }
-                                       else
-                                       {
-                                               window_y = atoi(data + i);
-                                               break;
-                                       }
-                                       while(i < data_size && isdigit(data[i])) i++;
+                       for( int i=0; i<(data_size-8) && data[i]!='<'; ++i ) {
+                               if( !isdigit(data[i]) ) continue;
+                               if( !state ) {
+                                       window_x = atoi(data + i);
+                                       state = 1;
                                }
+                               else {
+                                       window_y = atoi(data + i);
+                                       break;
+                               }
+                               while( i<data_size && isdigit(data[i]) ) ++i;
                        }
                        data[data_size] = 0;
                        read_data(&temp_keyframe);
                }
 
-               fclose(fd);
+               fclose(fp);
        }
        using_defaults = 0;
 //printf("PluginClient::load_defaults_xml %d %s\n", __LINE__, path);
index 6ffcc1ed1e28516abcece7107c9afccdd44b50ca..fb0329dfcb593c70598ec8f52835927c12702b7e 100644 (file)
@@ -710,7 +710,7 @@ void PluginFClient::save_data(KeyFrame *keyframe)
        char string[BCTEXTLEN];
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title(to_upper(string, plugin_title()));
        const AVClass *filt_class = config.filter_class();
        if( filt_class && filt_class->option ) {
@@ -739,7 +739,7 @@ void PluginFClient::read_data(KeyFrame *keyframe)
 {
        FileXML input;
        char string[BCTEXTLEN];
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while( !input.read_tag() ) {
                to_upper(string, plugin_title());
index 20c8ed3635728c720950a7014f6754618c77006c..289eed4ea98541b06a3df7198e537a0a787628ea 100644 (file)
@@ -229,7 +229,7 @@ char* PluginLV2Client::to_string(char *string, const char *input)
 void PluginLV2Client::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        char name[BCTEXTLEN];  to_string(name, plugin_title());
        output.tag.set_title(name);
        for( int i=0; i<config.size(); ++i ) {
@@ -243,7 +243,7 @@ void PluginLV2Client::save_data(KeyFrame *keyframe)
 void PluginLV2Client::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
        char name[BCTEXTLEN];  to_string(name, plugin_title());
 
        while( !input.read_tag() ) {
index fd9a6f51174b1a42fad30b5d5b61abd5ff713916..9ae3ba39a9bf95834baa40503a963fec335b7fb2 100644 (file)
@@ -153,7 +153,8 @@ void PluginLV2Client_OptPanel::update()
        const char *cols[] = { "option", "value", };
        const int col1_w = 150;
        int wids[] = { col1_w, get_w()-col1_w };
-       BC_ListBox::update(&items[0], &cols[0], &wids[0], sizeof(items)/sizeof(items[0]));
+       BC_ListBox::update(&items[0], &cols[0], &wids[0], sizeof(items)/sizeof(items[0]),
+               get_xposition(), get_yposition(), get_highlighted_item());
 }
 
 PluginLV2ClientPot::PluginLV2ClientPot(PluginLV2ClientWindow *gui, int x, int y)
index 3a6e18e5c7ad633009b3ee727a4300e30814e18f..237bedd6c5fbd8df1a9e71dc330303c1db526028 100644 (file)
@@ -328,10 +328,9 @@ void PresetsDBPlugin::load(FileXML *file, int is_factory)
                                sprintf(string, "Unknown");
                                const char *keyframe_title = file->tag.get_property("TITLE", string);
                                PresetsDBKeyframe *keyframe = new PresetsDBKeyframe(keyframe_title, is_factory);
-
-                               char data[MESSAGESIZE];
-                               file->read_text_until("/KEYFRAME", data, MESSAGESIZE);
-                               keyframe->set_data(data);
+                               XMLBuffer data;
+                               file->read_text_until("/KEYFRAME", &data);
+                               keyframe->set_data(data.cstr());
                                keyframes.append(keyframe);
                
                        }
index 84e875d73030ae54f501e49b5e38954092883407..bac9abd68050bed5c1f8908fa9e92e239f8e4b7d 100644 (file)
@@ -352,7 +352,10 @@ int Track::load(FileXML *file, int track_offset, uint32_t load_flags)
                        else
                        if(file->tag.title_is("TITLE"))
                        {
-                               file->read_text_until("/TITLE", title, BCTEXTLEN);
+                               XMLBuffer data;
+                               file->read_text_until("/TITLE", &data);
+                               memset(title, 0, sizeof(title));
+                               strncpy(title, data.cstr(), sizeof(title)-1);
                        }
                        else
                        if(load_flags && automation->load(file)
index 002c01368d4bd33ab8f3f65b3c5d6bf1ae93d5a3..e8863091ed828cc0b69271802d364b4b390aa9a7 100644 (file)
@@ -1,22 +1,22 @@
 abench
-#abitscope
-#abuffer
+#abitscope rate=25:size=1024x256
+#abuffer abuffer=sample_rate=48000:sample_fmt=s16p:channel_layout=stereo
 #abuffersink
 acompressor
 #acrossfade
 acrusher
 adelay delays=1
-#adrawgraph
+#adrawgraph signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
 aecho
 aemphasis
 aeval exprs=(sin(2*PI*t*440)+sin(2*PI*t*350))/2*mod(floor(2*t),2):channel_layout=1c
-#aevalsrc
+#aevalsrc 0
 afade
-#afftfilt
+#afftfilt 1-clip((b/nb)*b,0,1)
 #afifo
-#aformat
+aformat sample_fmts=u8|s16:channel_layouts=stereo
 agate
-#ahistogram
+#ahistogram dmode=single:r=25:s=hd720:scale=log:ascale=log:slide=replace
 #ainterleave
 #alimiter
 allpass
@@ -26,17 +26,17 @@ aloop
 #alphaextract
 #alphamerge
 #amerge
-#ametadata
+#ametadata mode=print:file=ametadata.txt
 #amix
 #amovie
-#anequalizer
-#anoisesrc
+#anequalizer c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
+anoisesrc d=60:c=pink:r=48000:a=0.5
 #anull
 #anullsink
 #anullsrc
-#apad
+#apad pad_len=1024
 aperms
-#aphasemeter
+#aphasemeter r=25:s=800x400:rc=2:gc=7:bc=1
 aphaser
 #apulsator
 arealtime
@@ -45,8 +45,8 @@ aresample sample_rate=48000
 #aselect
 #asendcmd
 #asetnsamples
-#asetpts
-#asetrate
+#asetpts PTS-STARTPTS
+asetrate r=48000
 #asettb
 #ashowinfo
 #asidedata
@@ -60,7 +60,7 @@ atrim start=1:end=240:start_pts=1:end_pts=2:duration=1:start_sample=1:end_sample
 avgblur
 bandpass
 bandreject
-bass
+bass channels=0x1
 bbox
 bench
 biquad
@@ -68,11 +68,11 @@ blackdetect
 blackframe
 #blend
 boxblur
-#buffer
+#buffer size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
 #buffersink
 bwdif
-#cellauto
-#channelmap
+#cellauto p=@:s=100x400:full=0:rule=18
+#channelmap 1|2|0|5|3|4:5.1
 #channelsplit
 chorus in_gain=0.400000:out_gain=0.400000:delays=1|1:decays=1|1:speeds=1|1:depths=1|1
 chromakey
@@ -82,21 +82,21 @@ colorbalance
 colorchannelmixer
 colorkey
 colorlevels
-colormatrix src=bt601:dst=smpte240m
-#colorspace
+colormatrix src=bt601:dst=bt709
+#colorspace bt709
 compand
 compensationdelay
 #concat
-#convolution
+#convolution 0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0
 #copy
 cover_rect
 crop
 cropdetect
 crystalizer
-#curves
+curves
 datascope
 dcshift
-#dctdnoiz
+dctdnoiz 4.5
 deband
 #decimate
 deflate
@@ -126,14 +126,15 @@ field
 #fieldmatch
 fieldorder
 #fifo
+fillborders
 #find_rect
-#firequalizer
+#firequalizer delay=0.1:fixed=on:zero_phase=on
 flanger
-#format
-#fps
+format pix_fmts=yuv420p|yuv444p|yuv410p
+#fps 30
 #framepack
 framerate
-#framestep
+framestep step=30
 fspp
 gblur
 #geq
@@ -162,7 +163,7 @@ interlace
 #join
 kerndeint
 lenscorrection
-#life
+#life ratio=2/3:s=200x200
 loudnorm
 lowpass
 lut
@@ -174,28 +175,28 @@ mandelbrot
 #maskedclamp
 #maskedmerge
 mcdeint
-#mergeplanes
+#mergeplanes 0x03010200:yuva444p
 mestimate
-#metadata
+#metadata mode=print:file=metadata.txt
 #midequalizer
 #minterpolate
 #movie
 mpdecimate
-#mptestsrc
+mptestsrc t=dc_luma
 negate
 nlmeans r=15:p=7:s=2
 #nnedi
-#noformat
+#noformat pix_fmts=yuv420p
 noise
 #null
 #nullsink
 #nullsrc
-#overlay
+#overlay x=main_w-overlay_w-10:y=main_h-overlay_h-10
 owdenoise
 #pad
 #palettegen
 #paletteuse
-#pan
+#pan 1c|c0=0.9*c0+0.1*c1
 perms
 perspective
 phase
@@ -204,10 +205,10 @@ pp
 pp7
 #premultiply
 prewitt
-#psnr
+#psnr PSNR=10*log10(MAX^2/MSE)
 #pullup
-#qp
-#random
+#qp 2+2*sin(PI*qp)
+#random seed=-1
 readeia608
 readvitc
 realtime
@@ -217,37 +218,37 @@ removegrain
 repeatfields
 #replaygain
 #reverse
-#rgbtestsrc
+rgbtestsrc
 rotate
 sab
-#scale
+scale 200:100
 #scale2ref
 #select
-#selectivecolor
+#selectivecolor greens=.5 0 -.33 0:blues=0 .27
 #sendcmd
 separatefields
-#setdar
-#setfield
-#setpts
-#setsar
+#setdar dar=16/9
+#setfield mode=auto
+#setpts PTS-STARTPTS
+#setsar sar=10/11
 #settb
 #showcqt
 #showfreqs
 showinfo
-#showpalette
-#showspectrum
+showpalette s=30
+#showspectrum s=1280x480:scale=log
 #showspectrumpic
-#showvolume
+#showvolume r=30
 #showwaves
 #showwavespic
 shuffleframes
 shuffleplanes
 #sidechaincompress
 #sidechaingate
-#sidedata
+#sidedata mode=delete
 signalstats
 #signature
-#silencedetect
+#silencedetect n=0.001
 silenceremove
 sine
 smartblur
@@ -265,19 +266,19 @@ stereowiden
 super2xsai
 swaprect
 swapuv
-#tblend
+tblend all_mode=grainextract
 #telecine
-#testsrc
-#testsrc2
+testsrc duration=5.3:size=qcif:rate=10
+testsrc2 duration=5.3:size=qcif:rate=10
 #threshold
-#thumbnail
-#tile
+#thumbnail n=50
+tile layout=3x2:nb_frames=5:padding=7:margin=2
 tinterlace
 transpose
 treble
 tremolo
-#trim
-#unsharp
+#trim 5:15
+unsharp luma_msize_x=5:luma_msize_y=5:luma_amount=2.5
 uspp
 vaguedenoiser
 vectorscope
@@ -292,7 +293,7 @@ waveform
 weave
 xbr
 yadif
-#yuvtestsrc
+yuvtestsrc
 zoompan
 ; new in 3.4.1
 #acopy
@@ -317,9 +318,9 @@ tlut2
 #tonemap
 #vmafmotion
 ; new in 4.0
-acontrast
+#acontrast Contrast=33
 #afir
-#aiir
+aiir
 #convolve
 #deconvolve
 drmeter
index 8de77f4f01d755a50f6404d92b4c485ab526cf0f..e2af4cbe2a05e5166c3128bc03b994767553a47d 100644 (file)
@@ -51,9 +51,9 @@ BC_TextBox::BC_TextBox(int x, int y, int w, int rows,
        is_utf8 = 1;
        skip_cursor = 0;
        reset_parameters(rows, has_border, font, size);
-       if( size > 0 )
+       if( size >= 0 )
                tstrcpy(text);
-       else    // text referenced directly
+       else    // reference shared directly
                this->text = text;
 }
 
@@ -63,12 +63,9 @@ BC_TextBox::BC_TextBox(int x, int y, int w, int rows,
 {
        is_utf8 = 1;
        skip_cursor = 0;
-       wsize = size > 0 ? size : wcslen(wtext);
-       if( size <= 0 ) size = 2*wsize;
        reset_parameters(rows, has_border, font, size);
-       this->wtext = new wchar_t[wsize+1];
+       wdemand(wcslen(wtext));
        wcsncpy(this->wtext, wtext, wsize);
-       this->wtext[wsize] = 0;
 }
 
 BC_TextBox::BC_TextBox(int x, int y, int w, int rows,
@@ -136,7 +133,7 @@ BC_TextBox::~BC_TextBox()
        delete suggestions;
        delete menu;
        delete [] wtext;
-       if( size > 0 )
+       if( size >= 0 )
                delete [] text;
 }
 
@@ -149,9 +146,11 @@ int BC_TextBox::reset_parameters(int rows, int has_border, int font, int size)
        this->rows = rows;
        this->has_border = has_border;
        this->font = font;
+// size > 0: fixed buffer, size == 0: dynamic buffer
+// size < 0: fixed shared buffer via set_text
        this->size = size;
        this->tsize = size >= 0 ? size : -size;
-       this->text = size > 0 ? new char[size+1] : 0;
+       this->text = size > 0 ? new char[this->tsize+1] : 0;
        if( this->text ) this->text[0] = 0;
        text_start = 0;
        text_end = 0;
@@ -187,14 +186,12 @@ int BC_TextBox::reset_parameters(int rows, int has_border, int font, int size)
 
 int BC_TextBox::tstrlen()
 {
-       if( !tsize ) return strlen(text);
-       return strnlen(text, tsize);
+       return !text ? 0 : strnlen(text, tsize);
 }
 
 int BC_TextBox::tstrcmp(const char *cp)
 {
        const char *tp = get_text();
-       if( !tsize ) return strcmp(tp, cp);
        return strncmp(tp, cp, tsize);
 }
 
@@ -202,12 +199,10 @@ char *BC_TextBox::tstrcpy(const char *cp)
 {
        dirty = 1;
        if( cp ) {
-               if( !tsize )
-                       return strcpy(text, cp);
+               if( !size ) tdemand(strlen(cp));
                strncpy(text, cp, tsize);
-               text[tsize-1] = 0;
        }
-       else
+       else if( text )
                text[0] = 0;
        return text;
 }
@@ -215,9 +210,8 @@ char *BC_TextBox::tstrcpy(const char *cp)
 char *BC_TextBox::tstrcat(const char *cp)
 {
        dirty = 1;
-       if( !tsize ) return strcat(text, cp);
+       if( !size ) tdemand(tstrlen() + strlen(cp));
        char *result = strncat(text, cp, tsize);
-       text[tsize-1] = 0;
        return result;
 }
 
@@ -226,13 +220,10 @@ int BC_TextBox::wtext_update()
        if( dirty ) {
                const char *src_enc = is_utf8 ? "UTF8" : BC_Resources::encoding;
                const char *dst_enc = BC_Resources::wide_encoding;
-               int nsize = tsize > 0 ? tsize : strlen(text) + BCTEXTLEN;
-               if( nsize > wsize || !wtext ) {
-                       wchar_t *ntext = new wchar_t[nsize+1];
-                       memcpy(ntext, wtext, wsize*sizeof(wtext[0]));
-                       delete [] wtext;  wtext = ntext;  wsize = nsize;
-               }
-               wlen = BC_Resources::encode(src_enc, dst_enc, text, strlen(text),
+               int tlen = tstrlen();
+               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);
                dirty = 0;
        }
@@ -472,9 +463,9 @@ int BC_TextBox::update(const char *text)
 int BC_TextBox::update(const wchar_t *wtext)
 {
        int wtext_len = wcslen(wtext);
-       if( wtext_len >= wsize ) wtext_len = wsize;
-       wcsncpy(this->wtext, wtext, wtext_len);
-       wlen = wtext_len;
+       wdemand(wtext_len);
+       wcsncpy(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;
        if(ibeam_letter > wtext_len) ibeam_letter = wtext_len;
@@ -558,13 +549,14 @@ const wchar_t* BC_TextBox::get_wtext()
 
 void BC_TextBox::set_text(char *text, int isz)
 {
-       if( size > 0 || isz < 0 ) return;
-       this->text = text;
-       tsize = isz;
-       size = -isz;
-       dirty = 1;
-       wtext_update();
-       draw(1);
+       if( size < 0 && isz > 0 ) {
+               this->text = text;
+               tsize = isz;
+               size = -isz;
+               dirty = 1;
+               wtext_update();
+               draw(1);
+       }
 }
 
 int BC_TextBox::get_text_rows()
@@ -652,7 +644,7 @@ void BC_TextBox::draw_cursor()
 
 void BC_TextBox::draw(int flush)
 {
-       int i, j, k;
+       int i, k;
        int row_begin, row_end;
        int highlight_x1, highlight_x2;
        int need_ibeam = 1;
@@ -669,11 +661,11 @@ void BC_TextBox::draw(int flush)
 // Draw text with selection
        set_font(font);
 
-       for(i=0, j=0, k=text_y; i < wtext_len && k < get_h(); k += text_height) {
+       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];
-               for(j=0; j<BCTEXTLEN-1 && i<wtext_len && wtext[i]!='\n'; ++i, ++j);
+               for( ; i<wtext_len && wtext[i]!='\n'; ++i );
                if( (row_end=i) < wtext_len ) ++i;
 
                if(k > top_margin-text_height && k < get_h()-bottom_margin) {
@@ -1741,10 +1733,34 @@ void BC_TextBox::delete_selection(int letter1, int letter2, int wtext_len)
        do_separators(1);
 }
 
+int BC_TextBox::wdemand(int len)
+{
+       if( wtext && wsize >= len ) return 0;
+       int nsize = len + wlen/2 + BCTEXTLEN;
+       wchar_t *ntext = new wchar_t[nsize+1];
+       ntext[nsize] = 0;
+       memcpy(ntext, wtext, wsize*sizeof(wtext[0]));
+       delete [] wtext;  wtext = ntext;  wsize = nsize;
+       return 1;
+}
+
+int BC_TextBox::tdemand(int len)
+{
+       if( text && tsize >= len ) return 0;
+       int tlen = !text ? 0 : strlen(text);
+       int nsize = len + tlen/2 + BCTEXTLEN;
+       char *ntext = new char[nsize+1];
+       ntext[nsize] = 0;
+       memcpy(ntext, text, tsize*sizeof(text[0]));
+       delete [] text;  text = ntext;  tsize = nsize;
+       return 1;
+}
+
 void BC_TextBox::insert_text(const wchar_t *wcp, int len)
 {
        if( len < 0 ) len = wcslen(wcp);
        int wtext_len = wtext_update();
+       wdemand(wtext_len + len + 1);
        if( unicode_active < 0 && highlight_letter1 < highlight_letter2 ) {
                delete_selection(highlight_letter1, highlight_letter2, wtext_len);
                highlight_letter2 = ibeam_letter = highlight_letter1;
@@ -1752,15 +1768,11 @@ void BC_TextBox::insert_text(const wchar_t *wcp, int len)
        }
 
        int i, j;
-       for(i=wtext_len-1, j=wtext_len+len-1; i>=ibeam_letter; i--, j--) {
-               if( j >= wsize ) continue;
-               wtext[j] = wtext[i];
-       }
+       for( i=wtext_len, j=wtext_len+len; --i>=ibeam_letter; )
+               if( --j < wsize ) wtext[j] = wtext[i];
+       for( i=ibeam_letter,j=0; j<len; ++i, ++j )
+               if( i < wsize ) wtext[i] = wcp[j];
 
-       for(i = ibeam_letter, j = 0; j < len; j++, i++) {
-               if( i >= wsize ) break;
-               wtext[i] = wcp[j];
-       }
        if( (wlen+=len) > wsize ) wlen = wsize;
        if( (ibeam_letter+=len) > wsize ) ibeam_letter = wsize;
        wtext[wlen] = 0;  // wtext allocated wsize+1
index 425768bfde593671d8c843de32a0ba865b295599..ffc5c0e429c0ca29d4f4b0d4154b38317a2ca02e 100644 (file)
@@ -52,10 +52,13 @@ class BC_TextBox : public BC_SubWindow
                else ch = -1;
                return ch;
        }
-
+// may be local fixed/dynamic, or shared fixed ref via set_text
        char *text;
+// always local dynamic
        wchar_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);
        BC_TextBox(int x, int y, int w, int rows, int size, wchar_t *wtext,
@@ -109,6 +112,8 @@ public:
        const char* get_text();
        const wchar_t* get_wtext();
        void set_text(char *text, int isz);
+       int wdemand(int len);
+       int tdemand(int len);
        int get_text_rows();
 // Set top left of text view
        void set_text_row(int row);
index 4f5d9cc3140d6d69ed316391fdbfe69872cbeaca..795f8b3c7f3b93b48bd9e68b0a07c84632e38e11 100644 (file)
@@ -1,6 +1,9 @@
 # last updated 2018/06/13 gg/pys
 http:*midi*
 http:*MIDI*
+
+http://bjones.it/psi-plugins/sidechain_gate
+http://dsheeler.org/plugins/tremelo
 http://lsp-plug.in/plugins/lv2/comp_delay_x2_stereo
 http://lsp-plug.in/plugins/lv2/graph_equalizer_x16_lr
 http://lsp-plug.in/plugins/lv2/graph_equalizer_x16_ms
@@ -28,6 +31,21 @@ http://plugin.org.uk/swh-plugins/buttlow_iir
 http://plugin.org.uk/swh-plugins/bwxover_iir
 http://plugin.org.uk/swh-plugins/highpass_iir
 http://plugin.org.uk/swh-plugins/lowpass_iir
+#
+# Rakarrack takes special handling to get these lv2 plugins to work;
+# the library needs to be linked using  -Bsymbolic-functions ;
+# and there are places where there exist uninitialized data objects.
+# 
+http://rakarrack.sourceforge.net/effects.html#DistBand
+http://rakarrack.sourceforge.net/effects.html#Reverbtron
+http://rakarrack.sourceforge.net/effects.html#Sequence
+http://rakarrack.sourceforge.net/effects.html#StereoHarm_no_mid
+http://rakarrack.sourceforge.net/effects.html#StompBox
+http://rakarrack.sourceforge.net/effects.html#StompBox_fuzz
+http://rakarrack.sourceforge.net/effects.html#Vocoder
+http://rakarrack.sourceforge.net/effects.html#dere
+http://rakarrack.sourceforge.net/effects.html#dist
+http://rakarrack.sourceforge.net/effects.html#har_no_mid
 http://yoshimi.sourceforge.net/lv2_plugin
 http://yoshimi.sourceforge.net/lv2_plugin_multi
 urn:juced:DrumSynth
index 1f83f499be3f8fc1366df43a9ef45b40f70f5a02..6b522295ea0d46caeb59df4e2b5e7cb1293ce50f 100644 (file)
@@ -253,7 +253,7 @@ int _1080to480Main::process_realtime(VFrame *input, VFrame *output)
 void _1080to480Main::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("1080TO480");
        output.tag.set_property("FIRST_FIELD", config.first_field);
        output.append_tag();
@@ -266,7 +266,7 @@ void _1080to480Main::save_data(KeyFrame *keyframe)
 void _1080to480Main::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index 64bbbb53d9eb984d67eba6f8a306b504c9533f46..ecf9a0f82af619a31cb61b4686ad70c6f249686a 100644 (file)
@@ -259,7 +259,7 @@ int _1080to540Main::process_realtime(VFrame *input, VFrame *output)
 void _1080to540Main::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("1080TO540");
        output.tag.set_property("FIRST_FIELD", config.first_field);
        output.append_tag();
@@ -272,7 +272,7 @@ void _1080to540Main::save_data(KeyFrame *keyframe)
 void _1080to540Main::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index fda3e1d016bd6acba29f72ccb146b9b06495492c..c1af6c277d61083dc1420bf9e2234be63b332ff8 100644 (file)
@@ -361,7 +361,7 @@ int _720to480Main::process_loop(VFrame *output)
 void _720to480Main::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("720TO480");
        output.tag.set_property("FIRST_FIELD", config.first_field);
        output.tag.set_property("DIRECTION", config.direction);
@@ -375,7 +375,7 @@ void _720to480Main::save_data(KeyFrame *keyframe)
 void _720to480Main::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index f4f372b187051f0cb9af78a886fffc6ca81373e5..b8a6cb57b0d58341247210defa80402b47a19f3f 100644 (file)
@@ -461,7 +461,7 @@ void C41Effect::render_gui(void* data)
 void C41Effect::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("C41");
        output.tag.set_property("ACTIVE", config.active);
@@ -490,7 +490,7 @@ void C41Effect::save_data(KeyFrame *keyframe)
 void C41Effect::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index d16f538453b3e1aab085c4989353c081dc1daf1a..67a8023fbc96e9ad9bf0b1e3effc716114f80a9d 100644 (file)
@@ -114,7 +114,7 @@ void AgingMain::save_data(KeyFrame *keyframe)
 {
        FileXML output;
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 // Store data
        output.tag.set_title("AGING");
        output.tag.set_property("AREA_SCALE", config.area_scale);
@@ -136,7 +136,7 @@ void AgingMain::save_data(KeyFrame *keyframe)
 void AgingMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 3726237bc9973bd32d87c78152e7c62a68ec2c64..83ecc734fab2af13dc149b8700ff90f2adf40a13 100644 (file)
@@ -1106,7 +1106,7 @@ LOAD_CONFIGURATION_MACRO(AudioScope, AudioScopeConfig)
 void AudioScope::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        while(!result)
@@ -1135,7 +1135,7 @@ void AudioScope::read_data(KeyFrame *keyframe)
 void AudioScope::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
 //printf("AudioScope::save_data %d %d %d\n", __LINE__, config.w, config.h);
        output.tag.set_title("AUDIOSCOPE");
index e808f5edba380ebb16db1aff1be7a141db3c1db2..e122251af3d97badef153092d162ee8a938aae16 100644 (file)
@@ -191,7 +191,7 @@ NEW_WINDOW_MACRO(BandSlideMain, BandSlideWindow);
 void BandSlideMain::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("BANDSLIDE");
        output.tag.set_property("BANDS", bands);
        output.tag.set_property("DIRECTION", direction);
@@ -206,7 +206,7 @@ void BandSlideMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index e707b4874c181c3e7169b966bf56273a7a220217..bda24a90e29280129b68817955d151aa76fe21d9 100644 (file)
@@ -188,7 +188,7 @@ NEW_WINDOW_MACRO(BandWipeMain, BandWipeWindow);
 void BandWipeMain::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("BANDWIPE");
        output.tag.set_property("BANDS", bands);
        output.tag.set_property("DIRECTION", direction);
@@ -203,7 +203,7 @@ void BandWipeMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index fab60bbfe8dae14c90b3de4b1a0dcdd87ba483b4..43fe2576365577301377865bc1fc6775779ece3d 100644 (file)
@@ -126,7 +126,7 @@ void BluebananaMain::save_data(KeyFrame *keyframe){
   FileXML output;
 
   // cause data to be stored directly in text
-  output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+  output.set_shared_output(keyframe->xbuf);
   output.tag.set_title("BLUEBANANA");
 
   output.tag.set_property("ACTIVE", config.active);
@@ -216,7 +216,7 @@ void BluebananaMain::save_nonauto(){
     int result = 0;
 
     input.read_from_string(default_keyframe->get_data());
-    output.set_shared_output(default_keyframe->get_data(), MESSAGESIZE);
+    output.set_shared_output(default_keyframe->xbuf);
 
     while(!result){
       result = input.read_tag();
@@ -249,7 +249,7 @@ void BluebananaMain::load_nonauto(){
   if(default_keyframe){
     FileXML input;
     int result = 0;
-    input.set_shared_input(default_keyframe->get_data(), strlen(default_keyframe->get_data()));
+    input.set_shared_input(default_keyframe->xbuf);
 
     while(!result){
       result = input.read_tag();
@@ -266,7 +266,7 @@ void BluebananaMain::read_data(KeyFrame *keyframe){
   FileXML input;
   int result = 0;
 
-  input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+  input.set_shared_input(keyframe->xbuf);
 
   while(!result){
     result = input.read_tag();
index 739e82956fb1d2f54daf5197cc65c4536f7083c7..bb9e6dbc8292bda6033fcc15d7e3f8d911a5737b 100644 (file)
@@ -309,7 +309,7 @@ void BlurMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("BLUR");
        output.tag.set_property("VERTICAL", config.vertical);
        output.tag.set_property("HORIZONTAL", config.horizontal);
@@ -330,7 +330,7 @@ void BlurMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 31fc23d6cfdef599338dda64f0749412eef65dce..19bcae30242659944d37b005a72a39d50f4bf882 100644 (file)
@@ -256,7 +256,7 @@ void BrightnessMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("BRIGHTNESS");
        output.tag.set_property("BRIGHTNESS", config.brightness);
        output.tag.set_property("CONTRAST",  config.contrast);
@@ -272,7 +272,7 @@ void BrightnessMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index ef546b294c83bc3217ae812267e520432525a494..525a43a7256ed4017cf0940d99d40eb6d81d44f8 100644 (file)
@@ -607,7 +607,7 @@ LOAD_CONFIGURATION_MACRO(ChromaKey, ChromaKeyConfig)
 void ChromaKey::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("CHROMAKEY");
        output.tag.set_property("RED", config.red);
        output.tag.set_property("GREEN", config.green);
@@ -626,7 +626,7 @@ void ChromaKey::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index 154e28489cf9330f3eee962efad6e63d3dfa9965..4b47cc7038f385e6e86bea4fb52fd85ff63df0b7 100644 (file)
@@ -935,7 +935,7 @@ LOAD_CONFIGURATION_MACRO(ChromaKeyHSV, ChromaKeyConfig)
 void ChromaKeyHSV::save_data(KeyFrame * keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("CHROMAKEY_HSV");
        output.tag.set_property("RED", config.red);
        output.tag.set_property("GREEN", config.green);
@@ -962,7 +962,7 @@ void ChromaKeyHSV::read_data(KeyFrame * keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while( !input.read_tag() ) {
                if( input.tag.title_is("CHROMAKEY_HSV") ) {
index ba1f0094fcc924c36019573138d4ff46d26f4791..7727594d6223a29c289a8b87d73aaf07a2ba7d5d 100644 (file)
@@ -498,7 +498,7 @@ void Color3WayMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("COLOR3WAY");
        for(int i = 0; i < SECTIONS; i++)
        {
@@ -535,7 +535,7 @@ void Color3WayMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index c180a720bd289ff146fd279027f38e2a931303d3..7b8f0cffd01161201786b006221c299cad595e19 100644 (file)
@@ -533,7 +533,7 @@ void ColorBalanceMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("COLORBALANCE");
        output.tag.set_property("CYAN", config.cyan);
        output.tag.set_property("MAGENTA",  config.magenta);
@@ -551,7 +551,7 @@ void ColorBalanceMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index f25a59ece7a6c3a9dcebfd769c7cb96df7e370c6..25eea16e5f6b0e74bc26bfb08d692cc7313db84e 100644 (file)
@@ -123,7 +123,7 @@ int CompressorEffect::is_multichannel() { return 1; }
 void CompressorEffect::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        config.levels.remove_all();
@@ -157,7 +157,7 @@ void CompressorEffect::read_data(KeyFrame *keyframe)
 void CompressorEffect::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("COMPRESSOR");
        output.tag.set_property("TRIGGER", config.trigger);
index 3ec93f7bfe952c06025ec6e05bebdd94fff807d2..2f22fed98adf620db3442ef8221a76c8e42b2bb9 100644 (file)
@@ -274,7 +274,7 @@ void CriKey::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("CRIKEY");
        output.tag.set_property("THRESHOLD", config.threshold);
@@ -306,7 +306,7 @@ void CriKey::save_data(KeyFrame *keyframe)
 void CriKey::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
        config.points.remove_all_objects();
        int result = 0;
 
index 75b0d1e58262dcbe8a2995bd52c54c75b8dc3e30..5f72ea0c066b76e7eb1d00862bab99e19b0b3ebb 100644 (file)
@@ -761,7 +761,7 @@ void Decimate::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("DECIMATE");
        output.tag.set_property("INPUT_RATE", config.input_rate);
 //     output.tag.set_property("AVERAGED_FRAMES", config.averaged_frames);
@@ -777,7 +777,7 @@ void Decimate::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index 50a8ad33b7f448183d0bfbc24473c980fa80091d..4429d86b7868c244b874fa9e9853cd95c90dc6db 100644 (file)
@@ -602,7 +602,7 @@ LOAD_CONFIGURATION_MACRO(DeInterlaceMain, DeInterlaceConfig)
 void DeInterlaceMain::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("DEINTERLACE");
        output.tag.set_property("MODE", config.mode);
        output.tag.set_property("DOMINANCE", config.dominance);
@@ -616,8 +616,8 @@ void DeInterlaceMain::save_data(KeyFrame *keyframe)
 
 void DeInterlaceMain::read_data(KeyFrame *keyframe)
 {
-       FileXML input;  char *data = keyframe->get_data();
-       input.set_shared_input(data, strlen(data));
+       FileXML input;
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index 27a5c5959758a0d82478c33a95ed5a6a51e26e5b..7ebf6330037baae755bdcdba69b8887d5f7be465 100644 (file)
@@ -539,7 +539,7 @@ LOAD_CONFIGURATION_MACRO(DeInterlaceMain, DeInterlaceConfig)
 void DeInterlaceMain::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("DEINTERLACE");
        output.tag.set_property("MODE", config.mode);
 //     output.tag.set_property("ADAPTIVE", config.adaptive);
@@ -554,7 +554,7 @@ void DeInterlaceMain::save_data(KeyFrame *keyframe)
 void DeInterlaceMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index e67b88409583365fd084b7ef6dcdf989ae1e3ff6..561b29e13e5039b6acdca662cc96f960eda81ade 100644 (file)
@@ -87,7 +87,7 @@ int DelayAudio::load_configuration()
 void DelayAudio::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        while(!result)
@@ -108,7 +108,7 @@ void DelayAudio::read_data(KeyFrame *keyframe)
 void DelayAudio::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("DELAYAUDIO");
        output.tag.set_property("LENGTH", (double)config.length);
index 8047666ea162a82452de926702a2db204629ea0e..2ec90f04f3a7f916b08fa638e1820d17d280dc45 100644 (file)
@@ -255,7 +255,7 @@ NEW_WINDOW_MACRO(DelayVideo, DelayVideoWindow)
 void DelayVideo::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("DELAYVIDEO");
        output.tag.set_property("LENGTH", (double)config.length);
@@ -269,7 +269,7 @@ void DelayVideo::save_data(KeyFrame *keyframe)
 void DelayVideo::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        while(!result)
index 238f9ad0ecb23e162296ee2eed936669b60f35b8..57e0be5937cb26ebf40edd33afeab2fb57950236 100644 (file)
@@ -134,7 +134,7 @@ int DenoiseEffect::is_realtime() { return 1; }
 void DenoiseEffect::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        while(!result)
@@ -154,7 +154,7 @@ void DenoiseEffect::read_data(KeyFrame *keyframe)
 void DenoiseEffect::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("DENOISE");
        output.tag.set_property("LEVEL", config.level);
index c9603689bfa24b8dcdce0003a8a322c27c6827d7..21ce0c198b03acc22122f1ac19ae912c56a62c86 100644 (file)
@@ -317,7 +317,7 @@ const char* DenoiseFFTEffect::plugin_title() { return N_("DenoiseFFT"); }
 void DenoiseFFTEffect::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        while(!result)
@@ -338,7 +338,7 @@ void DenoiseFFTEffect::read_data(KeyFrame *keyframe)
 void DenoiseFFTEffect::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("DENOISEFFT");
        output.tag.set_property("SAMPLES", config.samples);
index 1fd3381a227228c6d9f10c7ee58093f9e3608f54..22a5a33541daba534fb4c81ca9c584f375153937 100644 (file)
@@ -470,7 +470,7 @@ void DenoiseMJPEG::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("DENOISE_VIDEO2");
        output.tag.set_property("RADIUS", config.radius);
        output.tag.set_property("THRESHOLD", config.threshold);
@@ -492,7 +492,7 @@ void DenoiseMJPEG::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index 743e7423870e99fd49a4f0b42bdea58f3421f459..6bff65acd4a688cf14867863dd360292d3c67021 100644 (file)
@@ -793,7 +793,7 @@ void SelTempAvgMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("SELECTIVE_TEMPORAL_AVERAGE");
        output.tag.set_property("FRAMES", config.frames);
        output.tag.set_property("METHOD", config.method);
@@ -827,7 +827,7 @@ void SelTempAvgMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
@@ -863,7 +863,7 @@ int SelTempAvgMain::nextkeyframeisoffsetrestart(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index 12563624a7dc0f3da6ba24eb5db0a6f214691188..fa0bce49a80b61440d0d97fd240dfe9ad143a92d 100644 (file)
@@ -441,7 +441,7 @@ void DenoiseVideo::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("DENOISE_VIDEO");
        output.tag.set_property("FRAMES", config.frames);
        output.tag.set_property("THRESHOLD", config.threshold);
@@ -461,7 +461,7 @@ void DenoiseVideo::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index ba6ea71b1032a85f957874bd0aa603516c5f66fa..f22023e5328c3443d6018b12094b034e496f49f5 100644 (file)
@@ -123,7 +123,7 @@ void DeScratchMain::save_data(KeyFrame *keyframe)
 {
        FileXML output;
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 // Store data
        output.tag.set_title("DESCRATCH");
        output.tag.set_property("THRESHOLD", config.threshold);
@@ -152,7 +152,7 @@ void DeScratchMain::save_data(KeyFrame *keyframe)
 void DeScratchMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index ad636f12e5c7c65e097f8d90f3264f369f004d72..83adbb237e785aeec26a00307f601d26edc6fa4b 100644 (file)
@@ -94,7 +94,7 @@ void Despike::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause xml file to store data directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("DESPIKE");
        output.tag.set_property("LEVEL", config.level);
@@ -110,7 +110,7 @@ void Despike::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 // cause xml file to read directly from text
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
        int result = 0;
 
        result = input.read_tag();
index ff8502f0cb8d3a4ad9c5caa386e8dd7d53e96988..e863f593876cbbb425993bc04a1e7c61bb2d51e7 100644 (file)
@@ -335,7 +335,7 @@ int DiffKey::is_multichannel() { return 1; }
 void DiffKey::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("DIFFKEY");
        output.tag.set_property("THRESHOLD", config.threshold);
        output.tag.set_property("SLOPE", config.slope);
@@ -351,7 +351,7 @@ void DiffKey::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index a63bc5a7926f40ef46b705e3b28112bb68b65f86..4ce9731762fcf86e5df0d1bc23a9964ebc18615c 100644 (file)
@@ -441,7 +441,7 @@ void DownSampleMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("DOWNSAMPLE");
 
        output.tag.set_property("HORIZONTAL", config.horizontal);
@@ -462,7 +462,7 @@ void DownSampleMain::save_data(KeyFrame *keyframe)
 void DownSampleMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
        int result = 0;
 
        while(!result) {
index 99ae7959fe8ce5acdbbb185c1d59d45f9258ff33..ca23bbcf97c61956097530730361e7e05c88e56d 100644 (file)
@@ -304,7 +304,7 @@ void Echo::read_data(KeyFrame *keyframe)
 {
        int result;
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!(result = input.read_tag()) ) {
                if( !input.tag.title_is("ECHO")) continue;
@@ -318,7 +318,7 @@ void Echo::read_data(KeyFrame *keyframe)
 void Echo::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("ECHO");
        output.tag.set_property("LEVEL", config.level);
index f1ff269ed6cc2881777e27a8ef8abb229f6554f7..379fbe4b33e9c228fd29f3e08f7e80892f5deda0 100644 (file)
@@ -1188,7 +1188,7 @@ void EchoCancel::read_data(KeyFrame *keyframe)
 {
        int result;
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!(result = input.read_tag()) ) {
                if( !input.tag.title_is("ECHOCANCEL")) continue;
@@ -1211,7 +1211,7 @@ void EchoCancel::read_data(KeyFrame *keyframe)
 void EchoCancel::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("ECHOCANCEL");
        output.tag.set_property("LEVEL", config.level);
index 24c95dd4cc8004a1ba2cb13f60a4c0ff4f600882..14311130aaa168ad1863d548f0be047a7a04d82e 100644 (file)
@@ -82,7 +82,7 @@ void Edge::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("EDGE");
        output.tag.set_property("AMOUNT", config.amount);
@@ -97,7 +97,7 @@ void Edge::save_data(KeyFrame *keyframe)
 void Edge::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
        int result = 0;
 
        while( !(result=input.read_tag()) ) {
index 253e2a3c2f6ef6bdbb43cb173be7440923446029..9d0dbb271c6b8bbece260a27f7c2a0879ead3d18 100644 (file)
@@ -356,7 +356,7 @@ void FieldFrame::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("FIELD_FRAME");
        output.tag.set_property("DOMINANCE", config.field_dominance);
        output.tag.set_property("FIRST_FRAME", config.first_frame);
@@ -371,7 +371,7 @@ void FieldFrame::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index 6815fd1aaf233e77b939a65bafb0d98ff6de8eb3..ea1d60180c887f2c5397be48632cd7859ee87a14 100644 (file)
@@ -218,7 +218,7 @@ void FindObjMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("FINDOBJ");
        output.tag.set_property("ALGORITHM", config.algorithm);
        output.tag.set_property("USE_FLANN", config.use_flann);
@@ -265,7 +265,7 @@ void FindObjMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 5d866620b1dc69f93ba6296b1f1ddadb55f6caa4..30317b26530d702cbea16b887848b22379f3ec83 100644 (file)
@@ -225,7 +225,7 @@ void FlipMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("FLIP");
        output.append_tag();
        if(config.flip_vertical)
@@ -254,7 +254,7 @@ void FlipMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        config.flip_vertical = config.flip_horizontal = 0;
index 1f991e6cbef3528a246ffcb87ef0a263bde18b6d..6b50098143090b6c703892ade68185ee8f8565b7 100644 (file)
@@ -103,7 +103,7 @@ void FlowObj::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("FLOWOBJ");
        output.tag.set_property("DRAW_VECTORS", config.draw_vectors);
        output.tag.set_property("DO_STABILIZATION", config.do_stabilization);
@@ -121,7 +121,7 @@ void FlowObj::save_data(KeyFrame *keyframe)
 void FlowObj::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        while( !(result = input.read_tag()) ) {
index b29d3f03818c77772dcd4c97161e98c0a90d1e4d..314ab2b2bb6e8fb02018e133a9e84291d39108a3 100644 (file)
@@ -581,7 +581,7 @@ void FrameField::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("FRAME_FIELD");
        output.tag.set_property("DOMINANCE", config.field_dominance);
        output.append_tag();
@@ -595,7 +595,7 @@ void FrameField::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index 64db30480f734d0d062c6b091081604a0b84a849..7527f487f0d5ab4dff7cca466af13635d7e5d947 100644 (file)
@@ -465,7 +465,7 @@ int FreeverbEffect::is_multichannel() { return 1; }
 void FreeverbEffect::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        while(!result)
@@ -491,7 +491,7 @@ void FreeverbEffect::read_data(KeyFrame *keyframe)
 void FreeverbEffect::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("FREEVERB");
        output.tag.set_property("GAIN", config.gain);
index b873b22f89365914d352fb34963828f355183607..56f46d1f8f271c5b1b070c90821afc3f2220204d 100644 (file)
@@ -189,7 +189,7 @@ void FreezeFrameMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("FREEZEFRAME");
        output.append_tag();
        if(config.enabled)
@@ -217,7 +217,7 @@ void FreezeFrameMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        config.enabled = 0;
index f734f7d50d5cb7d966aacf03e68b9e9f604d78a8..c895583ddd5ed0b9f07c965f538d4ece95fab0aa 100644 (file)
@@ -89,7 +89,7 @@ void GaborObj::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("GABOROBJ");
        output.append_tag();
        output.append_newline();
@@ -102,7 +102,7 @@ void GaborObj::save_data(KeyFrame *keyframe)
 void GaborObj::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        while( !(result = input.read_tag()) ) {
index 111c7f800385f33eca3e0526bb21b21410dc549f..b9b9947fd559bf14f58264c627595d3a160c7ffa 100644 (file)
@@ -113,7 +113,7 @@ void Gain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause xml file to store data directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("GAIN");
        output.tag.set_property("LEVEL", config.level);
@@ -128,7 +128,7 @@ void Gain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 // cause xml file to read directly from text
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
        int result = 0;
 
        result = input.read_tag();
index 32312105992fee023a02aeb3bf12dc72b4b76778..a81c5e85e6c380c39e272cee1f9f7d3cb9a8c542 100644 (file)
@@ -526,7 +526,7 @@ void GammaMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("GAMMA");
        output.tag.set_property("MAX", config.max);
        output.tag.set_property("GAMMA", config.gamma);
@@ -543,7 +543,7 @@ void GammaMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 1c4a956651181ce79875d307c707c25bdf457bd6..a7f611b4d2e0f58d2ac5b5d43bc9fdfbf10847ed 100644 (file)
@@ -779,7 +779,7 @@ void GradientMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("GRADIENT");
 
        output.tag.set_property("ANGLE", config.angle);
@@ -808,7 +808,7 @@ void GradientMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index e64d9c6991bcb85aa93424bcb0b75f89a6e99788..ad2eae77d9dca3fc2d0c18390c559a5b3c513253 100644 (file)
@@ -1063,7 +1063,7 @@ void GraphicEQ::read_data(KeyFrame *keyframe)
        FileXML input;
        int result = 0;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
        config.points.remove_all_objects();
 
        while(!result)
@@ -1101,7 +1101,7 @@ void GraphicEQ::read_data(KeyFrame *keyframe)
 void GraphicEQ::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("GRAPHICEQ");
        output.tag.set_property("WINDOW_SIZE", config.window_size);
index c2029ca34f5e390cbcc722c4ebb30d6099131c1d..1cd317d62079984976964dc452d0034d6c16ec39 100644 (file)
@@ -191,7 +191,7 @@ void GreyCStorationMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("GREYCSTORATION");
 
        output.tag.set_property("AMPLITUDE", config.amplitude);
@@ -209,7 +209,7 @@ void GreyCStorationMain::save_data(KeyFrame *keyframe)
 void GreyCStorationMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while( !input.read_tag() ) {
                if(input.tag.title_is("GREYCSTORATION")) {
index d24b201831dd986b04a2f876393d9585af0b8338..cbe092f907fd69fbafe97f5a8f2f572183ab2fde 100644 (file)
@@ -315,7 +315,7 @@ void HistEqMain::update_gui()
 void HistEqMain::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("HISTEQ");
        output.tag.set_property("W", w);
        output.tag.set_property("H", h);
@@ -333,7 +333,7 @@ void HistEqMain::save_data(KeyFrame *keyframe)
 void HistEqMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
        int result = 0;
        while( !(result=input.read_tag()) ) {
                if( input.tag.title_is("HISTEQ") ) {
index 33c7b21d62dfc0ad433ff6761befa077be34e686..33091111dbbb05aa5217effc5d425784796c064c 100644 (file)
@@ -178,7 +178,7 @@ void HistogramMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("HISTOGRAM");
 
        char string[BCTEXTLEN];
@@ -218,7 +218,7 @@ void HistogramMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 584a5e6f4d7e6c506bf971b1e9a079dcded3df2d..1f786f957d287155156f4e26ca15037807846bfc 100644 (file)
@@ -127,7 +127,7 @@ void HistogramMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("HISTOGRAM");
 
        char string[BCTEXTLEN];
@@ -196,7 +196,7 @@ void HistogramMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        int current_input_mode = 0;
index b1329e57e35c08588b27b982fc03284b31e317e5..eb2b0ffa131e2a278232297107c912db99421cd1 100644 (file)
@@ -431,8 +431,8 @@ int HistogramCanvas::button_press_event()
                                        dragID = 1;
                                        break;
                                }
-                               if (plugin->config.smoothMode == HISTOGRAM_LINEAR)
-                                 break;
+//                             if (plugin->config.smoothMode == HISTOGRAM_LINEAR)
+//                               break;
 
                                int xright =
                                  (int)((current->x + current->xoffset_right - HIST_MIN_INPUT) * gui->canvas_w / FLOAT_RANGE);
index 5800928e08be79e7830a70a4edbcaa7c834c2fd6..727f54f26d28b5a12dee0925d12a454e7565b301 100644 (file)
@@ -578,7 +578,7 @@ LOAD_CONFIGURATION_MACRO(HueEffect, HueConfig)
 void HueEffect::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("HUESATURATION");
        output.tag.set_property("HUE", config.hue);
        output.tag.set_property("SATURATION", config.saturation);
@@ -592,7 +592,7 @@ void HueEffect::save_data(KeyFrame *keyframe)
 void HueEffect::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
        while(!input.read_tag())
        {
                if(input.tag.title_is("HUESATURATION"))
index e7133ab1122307565a1e87c9e06138e656f5450b..9294d8fd6b4217047e68a2a648769966b2288991 100644 (file)
@@ -198,7 +198,7 @@ void InterpolatePixelsMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("INTERPOLATEPIXELS");
        output.tag.set_property("X", config.x);
        output.tag.set_property("Y", config.y);
@@ -213,7 +213,7 @@ void InterpolatePixelsMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 892298b8b58345fe4a366f8e214c7d899886a9ea..169bf6e8e0b34910346138bf7c1ab8b5ccb9c2b9 100644 (file)
@@ -949,7 +949,7 @@ void InterpolateVideo::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("INTERPOLATEVIDEO");
        output.tag.set_property("INPUT_RATE", config.input_rate);
        output.tag.set_property("USE_KEYFRAMES", config.use_keyframes);
@@ -968,7 +968,7 @@ void InterpolateVideo::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index 66fd88bb88849174acbb589a78064d5439deaec3..7dc94c0103af836cff5ff37c52d9342bef41e8de 100644 (file)
@@ -225,7 +225,7 @@ void InvertVideoEffect::update_gui()
 void InvertVideoEffect::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("INVERTVIDEO");
        output.tag.set_property("R", config.r);
        output.tag.set_property("G", config.g);
@@ -241,7 +241,7 @@ void InvertVideoEffect::save_data(KeyFrame *keyframe)
 void InvertVideoEffect::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
        while(!input.read_tag())
        {
                if(input.tag.title_is("INVERTVIDEO"))
index 0408a394ded6fadb1819b32b38c418c076b901f7..6d3d85b3eedbe5b10e1f712cf5d3c0a209d03fab 100644 (file)
@@ -152,7 +152,7 @@ NEW_WINDOW_MACRO(IrisSquareMain, IrisSquareWindow)
 void IrisSquareMain::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("IRISSQUARE");
        output.tag.set_property("DIRECTION", direction);
        output.append_tag();
@@ -166,7 +166,7 @@ void IrisSquareMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index fc74ad0ef95f16d7906d6e19cacf4083e5406270..6e40455a4cee0e7b390bbd0929e1c22a9e04d95c 100644 (file)
@@ -98,7 +98,7 @@ void IVTCMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("IVTC");
        output.tag.set_property("FRAME_OFFSET", config.frame_offset);
        output.tag.set_property("FIRST_FIELD", config.first_field);
@@ -116,7 +116,7 @@ void IVTCMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        //float new_threshold;
index 9248b96f857bc12ca05b897c676331106c0acd64..7649377b7987f3d52b7707d738fb3568c5b33190 100644 (file)
@@ -655,7 +655,7 @@ void LensMain::save_data(KeyFrame *keyframe)
 
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("LENS");
        for( int i = 0; i < FOV_CHANNELS; ++i ) {
                sprintf(string, "FOCAL_LENGTH%d", i);
@@ -683,7 +683,7 @@ void LensMain::read_data(KeyFrame *keyframe)
        char string[BCTEXTLEN];
 
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 8f70e467b68ced465f7f88b430f0f3546532df9d..d8c00d03c8b6ddcf5b467ce1c17f435cbd6ee0ab 100644 (file)
@@ -200,7 +200,7 @@ int SoundLevelEffect::is_realtime() { return 1; }
 void SoundLevelEffect::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        while(!result)
@@ -220,7 +220,7 @@ void SoundLevelEffect::read_data(KeyFrame *keyframe)
 void SoundLevelEffect::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("SOUNDLEVEL");
        output.tag.set_property("DURATION", config.duration);
index 5f646b3e29f0525c32a0a3625a656bad5ec550f9..af6cb826510f8a8bdab291c01b25dc5b8a3e85ff 100644 (file)
@@ -559,7 +559,7 @@ void LinearBlurMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("LINEARBLUR");
 
        output.tag.set_property("RADIUS", config.radius);
@@ -580,7 +580,7 @@ void LinearBlurMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 59b4015bfbffbe55a78123b70c7815d174f4fb4c..92187364426db10e50570c5cb3297b8aebedd059 100644 (file)
@@ -588,7 +588,7 @@ LOAD_CONFIGURATION_MACRO(LiveVideo, LiveVideoConfig)
 void LiveVideo::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("LIVEVIDEO");
        output.tag.set_property("CHANNEL", config.channel);
        output.append_tag();
@@ -602,7 +602,7 @@ void LiveVideo::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 8a21ad6f3bf2f332c0a5bb8129ad7376a323a373..8bae8b517bda6b4715ff6759f053b2d28c3ef3f5 100644 (file)
@@ -304,7 +304,7 @@ void LoopAudio::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("LOOPAUDIO");
        output.tag.set_property("SAMPLES", config.samples);
        output.append_tag();
@@ -318,7 +318,7 @@ void LoopAudio::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index f25299a2016e02aa51c7e0fa9c5c761a8926723d..17983efadf9efdd677d65715af54ce4c28aa1ee3 100644 (file)
@@ -254,7 +254,7 @@ void LoopVideo::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("LOOPVIDEO");
        output.tag.set_property("FRAMES", config.frames);
        output.append_tag();
@@ -268,7 +268,7 @@ void LoopVideo::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index e8249bb0233aceb62b6a109aa834559875c3013d..780a0fef6c3dfbd1855a0c15da97e5e270c1789e 100644 (file)
@@ -260,7 +260,7 @@ void MotionCVMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("MOTIONCV");
 
        output.tag.set_property("BLOCK_COUNT", config.block_count);
@@ -298,7 +298,7 @@ void MotionCVMain::save_data(KeyFrame *keyframe)
 void MotionCVMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
        int result = 0;
 
        while( !(result = input.read_tag()) ) {
index c6f008cd791250ab2aa64731032f1a55f283b432..bb663c7dac05b0ec3b16299a4be8c49abbda698d 100644 (file)
@@ -332,7 +332,7 @@ void MotionHVMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("MOTIONHV");
 
        output.tag.set_property("BLOCK_COUNT", config.block_count);
@@ -372,7 +372,7 @@ void MotionHVMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 8b437b864f06b5cbb9360d4e4768996ea6119d5d..b8da2dca0b9ab7a527f9a24c0ddc1ead23e6c92a 100644 (file)
@@ -280,7 +280,7 @@ void MotionMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("MOTION");
 
        output.tag.set_property("BLOCK_COUNT", config.block_count);
@@ -319,7 +319,7 @@ void MotionMain::save_data(KeyFrame *keyframe)
 void MotionMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
        int result = 0;
 
        while( !(result = input.read_tag()) ) {
index 8bcd81d6e5867c942f048677e0a2247ecaaee924..d3197795fe21145d6272ec2eaa6ada24fd22c02e 100644 (file)
@@ -318,7 +318,7 @@ void MotionMain2::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("MOTION2");
 
        char string[BCTEXTLEN];
@@ -367,7 +367,7 @@ void MotionMain2::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index f29ea0bbff57099026887cc722cc84dbb3278c9f..b61e22442b91109f35c2fa69255a888a2b175374 100644 (file)
@@ -147,7 +147,7 @@ void Motion51Main::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("MOTION51");
        output.tag.set_property("HORIZ_LIMIT", config.horiz_limit);
        output.tag.set_property("VERT_LIMIT", config.vert_limit);
@@ -172,7 +172,7 @@ void Motion51Main::save_data(KeyFrame *keyframe)
 void Motion51Main::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
        int result = 0;
 
        while( !(result = input.read_tag()) ) {
index 8777413a1354c6978fef531d0e04a94eae70ff14..aac86d25da461cbc02152e33c1077741321e0e43 100644 (file)
@@ -482,7 +482,7 @@ void MotionBlurMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("MOTIONBLUR");
 
        output.tag.set_property("RADIUS", config.radius);
@@ -498,7 +498,7 @@ void MotionBlurMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 77a80a3bbd59f8cbeb6ae77de38f115e75a0f6b9..a3c9a89684552c6d38447f13c8c5bc23dd33fe89 100644 (file)
@@ -101,7 +101,7 @@ void MoveObj::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("MOVEOBJ");
        output.tag.set_property("DRAW_VECTORS", config.draw_vectors);
        output.tag.set_property("DO_STABILIZATION", config.do_stabilization);
@@ -119,7 +119,7 @@ void MoveObj::save_data(KeyFrame *keyframe)
 void MoveObj::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        while( !(result = input.read_tag()) ) {
index e10141854229cf4cd75dc8e2ef338b8faa3bd37d..9dbe1e241b4ec089f7c5e5b20a69ac7c065223f7 100644 (file)
@@ -336,7 +336,7 @@ void OilEffect::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("OIL_PAINTING");
        output.tag.set_property("RADIUS", config.radius);
        output.tag.set_property("USE_INTENSITY", config.use_intensity);
@@ -351,7 +351,7 @@ void OilEffect::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index e9909e854812c434c56868266da6cc048ef7ba7a..8f8cdea5693999439027ac3badb3036f059d7ad2 100644 (file)
@@ -657,7 +657,7 @@ void Overlay::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("OVERLAY");
        output.tag.set_property("MODE", config.mode);
        output.tag.set_property("DIRECTION", config.direction);
@@ -672,7 +672,7 @@ void Overlay::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index b5d544577e8dcf648417a559a1b3e32a824abed3..ca9d31ec9f686afd71bdbd302a0f0250817f9d91 100644 (file)
@@ -337,7 +337,7 @@ int OverlayAudio::is_multichannel() { return 1; }
 void OverlayAudio::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        while(!result)
@@ -358,7 +358,7 @@ void OverlayAudio::read_data(KeyFrame *keyframe)
 void OverlayAudio::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("OVERLAY");
        output.tag.set_property("OUTPUT", config.output_track);
index a19ff7ff3464e2e71ec9f9a1cd2cbb8dedc11eae..f1e42e5ceb7ef6edb3f00ef4402790e5e10ab4ab 100644 (file)
@@ -822,7 +822,7 @@ int ParametricEQ::is_realtime() { return 1; }
 void ParametricEQ::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        while(!result)
@@ -852,7 +852,7 @@ void ParametricEQ::read_data(KeyFrame *keyframe)
 void ParametricEQ::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("PARAMETRICEQ");
        output.tag.set_property("WETNESS", config.wetness);
index 5c31ea877c946754f92e8a304d613f9d88419c0d..fc39159715b902ccd35208c95eb28af47b4d3744 100644 (file)
@@ -689,7 +689,7 @@ void PerspectiveMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("PERSPECTIVE");
 
        output.tag.set_property("X1", config.x1);
@@ -719,7 +719,7 @@ void PerspectiveMain::save_data(KeyFrame *keyframe)
 void PerspectiveMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
        int result = 0;
 
        while(!(result = input.read_tag()) ) {
index 5c3f3c79a8dbb7eb3f8a1bb3a1d9d40863b95458..59b3ff026612b3014c189613f31672bf18f9a1e1 100644 (file)
@@ -439,7 +439,7 @@ void PhotoScaleMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("PHOTOSCALE");
        output.tag.set_property("WIDTH", config.width);
        output.tag.set_property("HEIGHT", config.height);
@@ -455,7 +455,7 @@ void PhotoScaleMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 92090d3245d4f3402e6a53d1e8fbae0704398197..d996be05275dbda93a22aa6b98515c3bf12e1fd8 100644 (file)
@@ -76,7 +76,7 @@ void Piano::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 // cause htal file to read directly from text
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
 //printf("Piano::read_data %s\n", keyframe->get_data());
        int result = 0, current_osc = 0, total_oscillators = 0;
@@ -113,7 +113,7 @@ void Piano::save_data(KeyFrame *keyframe)
 {
        FileXML output;
 // cause htal file to store data directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("SYNTH");
        output.tag.set_property("WETNESS", config.wetness);
index c0de9c397db654e1e2c79043dddba3e471124ac7..673c33c173b341ba886f5d539e3e48e72fe1a324 100644 (file)
@@ -68,7 +68,7 @@ int PitchEffect::is_realtime() { return 1; }
 void PitchEffect::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        while(!result)
@@ -89,7 +89,7 @@ void PitchEffect::read_data(KeyFrame *keyframe)
 void PitchEffect::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("PITCH");
        output.tag.set_property("SCALE", config.scale);
index 3c8ba7a6cbda6388677724e24732b0c7f6b1d22b..08933b59bf7c052ac5e8a4171c3eb2de5556eef9 100644 (file)
@@ -311,7 +311,7 @@ void PolarEffect::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("POLAR");
        output.tag.set_property("DEPTH", config.depth);
        output.tag.set_property("ANGLE", config.angle);
@@ -326,7 +326,7 @@ void PolarEffect::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index 6861becb767b14cfecf8505937f478d0ca812930..e136992584d277593f78b3dbfb15054a57688ca1 100644 (file)
@@ -77,7 +77,7 @@ void PuzzleObj::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("PUZZLEOBJ");
        output.tag.set_property("PIXELS", config.pixels);
        output.tag.set_property("ITERATIONS", config.iterations);
@@ -92,7 +92,7 @@ void PuzzleObj::save_data(KeyFrame *keyframe)
 void PuzzleObj::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        while( !(result = input.read_tag()) ) {
index 28f532e3adc96e353401e5b27fe0f6dae34c7128..1847a200920da1f9c26c2e79abfff69b0f7974bb 100644 (file)
@@ -450,7 +450,7 @@ void RadialBlurMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("RADIALBLUR");
 
        output.tag.set_property("X", config.x);
@@ -472,7 +472,7 @@ void RadialBlurMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index afacecc9737dc51d04f708f5b039cc4afdaa3764..b39fa6307567e43a5da97c826139531ff5b5677d 100644 (file)
@@ -480,7 +480,7 @@ void ReframeRT::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("REFRAMERT");
 // for backwards compatability, we call num scale
        output.tag.set_property("SCALE", config.num);
@@ -498,7 +498,7 @@ void ReframeRT::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index 0a87accaf3c971ad4182557d19fa63f01bb2caef..660af9569eeed60be58c9acc69bc2d153b00f7ce 100644 (file)
@@ -288,7 +288,7 @@ void RemoveGaps::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("REMOVEGAPS");
        output.tag.set_property("DURATION", config.duration);
        output.tag.set_property("THRESHOLD", config.threshold);
@@ -303,7 +303,7 @@ void RemoveGaps::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index f236f23e5911bcdaff71e20f79d1d1c1ec648be5..7527523ee6c7bd218c5006b9955e3d9897727f05 100644 (file)
@@ -492,7 +492,7 @@ void Reroute::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // write configuration data as XML text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("REROUTE");
        output.tag.set_property("OPERATION", config.operation);
        output.tag.set_property("OUTPUT_TRACK", config.output_track);
@@ -505,7 +505,7 @@ void Reroute::save_data(KeyFrame *keyframe)
 void Reroute::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index 9408afaaa3a9cc4c84035c0a0ac49899f31b7bea..af6c4ab6a773a7b1c42e8f639a10a4ee3fb2fb4e 100644 (file)
@@ -291,7 +291,7 @@ void ResampleRT::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("RESAMPLERT");
        output.tag.set_property("SCALE", config.num);
        output.tag.set_property("DENOM", config.denom);
@@ -306,7 +306,7 @@ void ResampleRT::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index f1aaadeaff5453329edd9599055ad248516c411d..b5bddf2ae77ae67bf6032cef72e258001338e37c 100644 (file)
@@ -297,7 +297,7 @@ void Reverb::save_data(KeyFrame *keyframe)
 //printf("Reverb::save_data 1\n");
 
 // cause xml file to store data directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 //printf("Reverb::save_data 1\n");
 
        output.tag.set_title("REVERB");
@@ -323,7 +323,7 @@ void Reverb::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 // cause xml file to read directly from text
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
        int result = 0;
 
        result = input.read_tag();
index ac735cdd696ea2327f3e5f1f0ec2d925735087e8..687c950c2fdf661b943e9dcf4281a28aa4e39330 100644 (file)
@@ -310,7 +310,7 @@ void ReverseAudio::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("REVERSEAUDIO");
        output.tag.set_property("ENABLED", config.enabled);
        output.append_tag();
@@ -324,7 +324,7 @@ void ReverseAudio::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index eaa5b54ea09d9b040813178fca09802b8d6d1f08..cf8f1e1d3d6b174e75403aab6daca61bd7f1c6e2 100644 (file)
@@ -283,7 +283,7 @@ void ReverseVideo::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("REVERSEVIDEO");
        output.tag.set_property("ENABLED", config.enabled);
        output.append_tag();
@@ -297,7 +297,7 @@ void ReverseVideo::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index 988f6ec887bc03abfd66f57d818d19593efe11fd..e9ec7e39fbf71f6d706de140d81f767856ec0ff4 100644 (file)
@@ -87,7 +87,7 @@ void RGB601Main::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("RGB601");
        output.tag.set_property("DIRECTION", config.direction);
        output.append_tag();
@@ -101,7 +101,7 @@ void RGB601Main::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 1f3d73994b0b0384b2613c073f620a2a1695fae4..d558687b106ad68c2b30e0929fc1d0252ba47f10 100644 (file)
@@ -235,7 +235,7 @@ void RGBShiftEffect::update_gui()
 void RGBShiftEffect::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("RGBSHIFT");
        output.tag.set_property("R_DX", config.r_dx);
        output.tag.set_property("R_DY", config.r_dy);
@@ -253,7 +253,7 @@ void RGBShiftEffect::save_data(KeyFrame *keyframe)
 void RGBShiftEffect::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
        while(!input.read_tag())
        {
                if(input.tag.title_is("RGBSHIFT"))
index 4c51276f0b17fc9d7100f46ab7fd547306607ca6..db30ad6ed76508c2ee2dd240da45c670c0bdf703 100644 (file)
@@ -635,7 +635,7 @@ void RotateEffect::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("ROTATE");
        output.tag.set_property("ANGLE", (float)config.angle);
        output.tag.set_property("PIVOT_X", (float)config.pivot_x);
@@ -654,7 +654,7 @@ void RotateEffect::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 08e3e2a09ff921ccde2cb36e2560007a812251d7..20d0dc57a88680d6dc1960e885dd5de14474d5eb 100644 (file)
@@ -314,7 +314,7 @@ void Rumbler::save_data(KeyFrame *keyframe)
 {
        FileXML output;
 
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("RUMBLER");
        output.tag.set_property("TIME_RUMBLE", config.time_rumble);
        output.tag.set_property("TIME_RATE", config.time_rate);
@@ -332,7 +332,7 @@ void Rumbler::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while( !input.read_tag() ) {
                if( input.tag.title_is("RUMBLER") ) {
index 2530dfdcaf0c85da2ecc8bdf3ba61bef70a3856f..cb15aff0ecb3008bd103d5804c16e6e7d8c15f99 100644 (file)
@@ -117,7 +117,7 @@ void ScaleMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
 // Store data
        output.tag.set_title("SCALE");
@@ -139,7 +139,7 @@ void ScaleMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        config.constrain = 0;
index e1ea68ccfa9a82232517cc0c032ebb3035c55489..40856cce4511783231b30085754115e79d5943ad 100644 (file)
@@ -105,7 +105,7 @@ void ScaleRatioMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
 // Store data
        output.tag.set_title("SCALERATIO");
@@ -136,7 +136,7 @@ void ScaleRatioMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 1f80e288876396d638d0f970f976782811282b64..9a38a916b03de086ae3f4cfa33c3779d26a13f33 100644 (file)
@@ -355,7 +355,7 @@ NEW_WINDOW_MACRO(ShapeWipeMain, ShapeWipeWindow);
 void ShapeWipeMain::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("SHAPEWIPE");
        output.tag.set_property("DIRECTION", direction);
        output.tag.set_property("ANTIALIAS", antialias);
@@ -372,7 +372,7 @@ void ShapeWipeMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index 4223c10af9d13c4d5b0587a0e5c9243cdbff7ccc..9cbd1c7e4ce11bb0cb6750225a2c895edcdb626b 100644 (file)
@@ -204,7 +204,7 @@ void SharpenMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("SHARPNESS");
        output.tag.set_property("VALUE", config.sharpness);
        output.tag.set_property("INTERLACE", config.interlace);
@@ -221,7 +221,7 @@ void SharpenMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 90722d6f52957206c793cfe176aa49d29511886d..e4cf3c4af49df0774ac34d0ac99efbecfa7031e7 100644 (file)
@@ -277,7 +277,7 @@ void ShiftInterlaceMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("SHIFTINTERLACE");
        output.tag.set_property("ODD_OFFSET", config.odd_offset);
        output.tag.set_property("EVEN_OFFSET", config.even_offset);
@@ -293,7 +293,7 @@ void ShiftInterlaceMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 6b893f680c914dca27ec1010cb9f333304ec17b7..99a2df8335959fce9f683bc2fcc5bff95745893e 100644 (file)
@@ -218,7 +218,7 @@ NEW_WINDOW_MACRO(SlideMain, SlideWindow)
 void SlideMain::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("SLIDE");
        output.tag.set_property("MOTION_DIRECTION", motion_direction);
        output.tag.set_property("DIRECTION", direction);
@@ -233,7 +233,7 @@ void SlideMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index fc8511284b423af8cbbb6d8354920a22af8cba6b..7b81bbebf4094367836e3c9080031a6c06411933 100644 (file)
@@ -1207,7 +1207,7 @@ LOAD_CONFIGURATION_MACRO(Spectrogram, SpectrogramConfig)
 void Spectrogram::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        while(!result)
@@ -1237,7 +1237,7 @@ void Spectrogram::read_data(KeyFrame *keyframe)
 void Spectrogram::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("SPECTROGRAM");
        output.tag.set_property("LEVEL", (double)config.level);
index 8b1f69519f01c0bc139ecb2c180711da02aadc68..692c1a84a730938e79219f8ed1edbb128e0ae220 100644 (file)
@@ -484,7 +484,7 @@ void SphereCamMain::save_data(KeyFrame *keyframe)
        char string[BCTEXTLEN];
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("SPHERECAM");
        
        for( int i = 0; i < EYES; i++ ) {
@@ -520,7 +520,7 @@ void SphereCamMain::read_data(KeyFrame *keyframe)
        char string[BCTEXTLEN];
 
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 2d8b515c5e9329265dbaad24d81a6956572a9970..420cdacfbffc54e89aa1902edd1d2d0bf857fafe 100644 (file)
@@ -76,7 +76,7 @@ void StylizeObj::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("STYLIZEOBJ");
        output.tag.set_property("MODE", config.mode);
        output.tag.set_property("SMOOTHING", config.smoothing);
@@ -93,7 +93,7 @@ void StylizeObj::save_data(KeyFrame *keyframe)
 void StylizeObj::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        while( !(result = input.read_tag()) ) {
index 9b6007f56f03072b345fcdf1e766696a66cb2824..6f8e5fd606e20ebc124c7f99eaccb4ac38a6dc1b 100644 (file)
@@ -113,7 +113,7 @@ void SvgMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("SVG");
        output.tag.set_property("OUT_X", config.out_x);
@@ -134,8 +134,7 @@ void SvgMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       const char *data = keyframe->get_data();
-       input.set_shared_input((char*)data, strlen(data));
+       input.set_shared_input(keyframe->xbuf);
        int result = 0;
 
        while( !(result = input.read_tag()) ) {
index d8a6543b197f685f621f5311fc4a484c4f5bb038..cf169d26c99049b48f1dce1fa3b3a67fb6a53ae2 100644 (file)
@@ -220,7 +220,7 @@ void SwapMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("SWAPCHANNELS");
        output.tag.set_property("RED", config.red);
        output.tag.set_property("GREEN", config.green);
@@ -238,7 +238,7 @@ void SwapMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index d4270c46204f07d4e3f0a72a22bd5e2ec15014ce..60a8a98c000314b286e2a972c5dbf6f7b3a58acc 100644 (file)
@@ -238,7 +238,7 @@ void SwapFrames::update_gui()
 void SwapFrames::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("SWAPFRAMES");
        output.tag.set_property("ON", config.on);
        output.tag.set_property("SWAP_EVEN", config.swap_even);
@@ -252,7 +252,7 @@ void SwapFrames::save_data(KeyFrame *keyframe)
 void SwapFrames::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
        while(!input.read_tag())
        {
                if(input.tag.title_is("SWAPFRAMES"))
index d9fe51e2348d0e0c46a43fb649b406edbf2bf4a2..194da4c70ec13be23009c71db725a4a135aece7e 100644 (file)
@@ -82,7 +82,7 @@ void Synth::read_data(KeyFrame *keyframe)
        FileXML input;
        char string[BCTEXTLEN];
 // cause htal file to read directly from text
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
 //printf("Synth::read_data %s\n", keyframe->get_data());
        int result = 0, current_osc = 0;
@@ -136,7 +136,7 @@ void Synth::save_data(KeyFrame *keyframe)
        char string[BCTEXTLEN];
 
 // cause htal file to store data directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("SYNTH");
        output.tag.set_property("WETNESS", config.wetness);
index 402ba5987d6b069b3a2f6aec172ad134b5fd03bc..ad68519830ef042fc89489cf7a402f7ad45c624b 100644 (file)
@@ -169,7 +169,7 @@ int ThresholdMain::process_buffer(VFrame *frame,
 void ThresholdMain::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("THRESHOLD");
        output.tag.set_property("MIN", config.min);
        output.tag.set_property("MAX", config.max);
@@ -187,8 +187,7 @@ void ThresholdMain::save_data(KeyFrame *keyframe)
 void ThresholdMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       const char *data = keyframe->get_data();
-       input.set_shared_input((char *)data, strlen(data));
+       input.set_shared_input(keyframe->xbuf);
        int result = 0;
        while(!result)
        {
index 2061c81c3a590bf2138fd98f0cb2ac936b974761..d32db7efe1eb80c849806a4ac5ab0214f567642c 100644 (file)
@@ -1026,7 +1026,7 @@ void TimeAvgMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("TIME_AVERAGE");
        output.tag.set_property("FRAMES", config.frames);
        output.tag.set_property("MODE", config.mode);
@@ -1045,7 +1045,7 @@ void TimeAvgMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index 2227f7ad2c9c16ae86042021909b1209173b7fc1..47a70059b736f90064fd545c72810bca0bb41376 100644 (file)
@@ -1094,7 +1094,7 @@ void TimeFrontMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("TIMEFRONT");
 
        output.tag.set_property("ANGLE", config.angle);
@@ -1119,7 +1119,7 @@ void TimeFrontMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 84a865789abc958e7033c93b79af4ed09d3d3dde..1761782b3fd98fe9b0d6dcbd430427f480df9762 100644 (file)
@@ -323,7 +323,7 @@ void TimeStretchRT::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("TIMESTRETCHRT");
        output.tag.set_property("NUM", config.num);
        output.tag.set_property("DENOM", config.denom);
@@ -339,7 +339,7 @@ void TimeStretchRT::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index 5086fea00d029d6101dae87de2b60ae5229449ed..d0f4f681ca08fddd629e7cffa36f392c6aa8317f 100644 (file)
@@ -102,7 +102,7 @@ TitleConfig::TitleConfig()
        vjustification = JUSTIFY_MID;
        fade_in = 0.0;  fade_out = 0.0;
        pixels_per_second = 100.0;
-       wtext[0] = 0;  wlen = 0;
+       wtext = 0;  wsize = 0;  wlen = 0;
        title_x = title_y = 0.0;
        title_w = title_h = 0;
        window_w = 860;
@@ -120,6 +120,7 @@ TitleConfig::TitleConfig()
 
 TitleConfig::~TitleConfig()
 {
+       delete [] wtext;
 }
 
 int TitleConfig::equivalent(TitleConfig &that)
@@ -178,7 +179,7 @@ void TitleConfig::copy_from(TitleConfig &that)
        fade_in = that.fade_in;
        fade_out = that.fade_out;
        pixels_per_second = that.pixels_per_second;
-       wlen = that.wlen;
+       demand(wlen = that.wlen);
        memcpy(wtext, that.wtext, that.wlen * sizeof(wchar_t));
        title_x = that.title_x;  title_y = that.title_y;
        title_w = that.title_w;  title_h = that.title_h;
@@ -216,7 +217,7 @@ void TitleConfig::interpolate(TitleConfig &prev, TitleConfig &next,
        fade_in = prev.fade_in;
        fade_out = prev.fade_out;
        pixels_per_second = prev.pixels_per_second;
-       wlen = prev.wlen;
+       demand(wlen = prev.wlen);
        memcpy(wtext, prev.wtext, prev.wlen * sizeof(wchar_t));
        wtext[wlen] = 0;
        this->title_x = prev.title_x == next.title_x ? prev.title_x :
@@ -239,10 +240,21 @@ void TitleConfig::interpolate(TitleConfig &prev, TitleConfig &next,
        loop_playback = prev.loop_playback;
 }
 
+int TitleConfig::demand(long sz)
+{
+       if( wtext && wsize >= sz ) return 0;
+       delete [] wtext;
+       wsize = sz + wlen/2 + 0x1000;
+       wtext = new wchar_t[wsize+1];
+       wtext[wsize] = 0;
+       return 1;
+}
+
 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,
-               (char*)text,tlen, (char *)wtext,sizeof(wtext)) / sizeof(wchar_t);
+               (char*)text,tlen, (char *)wtext,sizeof(*wtext)*wsize) / sizeof(wchar_t);
        while( wlen > 0 && !wtext[wlen-1] ) --wlen;
 }
 
@@ -2503,7 +2515,7 @@ void TitleMain::save_data(KeyFrame *keyframe)
 {
        FileXML output;
 
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("TITLE");
        output.tag.set_property("FONT", config.font);
        output.tag.set_property("ENCODING", config.encoding);
@@ -2539,19 +2551,12 @@ void TitleMain::save_data(KeyFrame *keyframe)
        output.tag.set_property("LOOP_PLAYBACK", config.loop_playback);
        output.append_tag();
        output.append_newline();
-       char text[2*sizeof(config.wtext)];
+       long tsz = 2*config.wsize + 0x1000;
+       char text[tsz];
        int text_len = BC_Resources::encode(
                BC_Resources::wide_encoding, DEFAULT_ENCODING,
                (char*)config.wtext, config.wlen*sizeof(wchar_t),
-               text, sizeof(text));
-       int len = output.length(), avail = MESSAGESIZE-16 - len;
-       if( text_len >= avail ) { // back off last utf8 char
-               text_len = avail;
-               while( text_len > 0 && (text[text_len-1] & 0xc0) == 0x80 )
-                       text[--text_len] = 0;
-               if( text_len > 0 )
-                       text[--text_len] = 0;
-       }
+               text, tsz);
        output.append_text(text, text_len);
        output.tag.set_title("/TITLE");
        output.append_tag();
@@ -2565,7 +2570,7 @@ void TitleMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
@@ -2620,22 +2625,22 @@ void TitleMain::read_data(KeyFrame *keyframe)
 void TitleMain::insert_text(const wchar_t *wtxt, int pos)
 {
        int len = wcslen(wtxt);
-       wchar_t *wtext = config.wtext;
-       int wsize = sizeof(config.wtext)-1;
        int wlen = config.wlen;
        if( pos < 0 ) pos = 0;
        if( pos > wlen ) pos = wlen;
-
-       for( int i=wlen-1, j=wlen+len-1; i>=pos; --i,--j ) {
-               if( j >= wsize ) continue;
+       config.demand(wlen + len);
+       int wsize1 = config.wsize-1;
+       wchar_t *wtext = config.wtext;
+       for( int i=wlen, j=wlen+len; --i>=pos; ) {
+               if( --j >= wsize1 ) continue;
                wtext[j] = wtext[i];
        }
        for( int i=pos, j=0; j<len; ++i,++j ) {
-               if( i >= wsize ) break;
+               if( i >= wsize1 ) break;
                wtext[i] = wtxt[j];
        }
 
-       if( (wlen+=len) > wsize ) wlen = wsize;
+       if( (wlen+=len) > wsize1 ) wlen = wsize1;
        wtext[wlen] = 0;
        config.wlen = wlen;
 }
index 0f887d017f5b01287d9ec53a4c4ff17a4315b027..cf4a203791f41c8143014b8ebd5a41d2c0ad4e6d 100644 (file)
@@ -161,8 +161,8 @@ public:
        double fade_in, fade_out;
        float pixels_per_second; // Speed of motion
 // Text to display
-       wchar_t wtext[3*BCTEXTLEN];
-       int wlen;
+       wchar_t *wtext;
+       long wsize, wlen;
 // Position in frame relative to top left
        float title_x, title_y;
        int title_w, title_h;
@@ -178,6 +178,7 @@ public:
        char background_path[BCTEXTLEN];
 
        void convert_text();
+       int demand(long sz);
 
 // Time Code Format
        int timecode_format;
index 175101185fa8e8301fe99a84264caa158bcd0361..bddb7993bdb845162de47d773e6454d01b847865 100644 (file)
@@ -105,7 +105,6 @@ TitleWindow::TitleWindow(TitleMain *client)
        text_title = 0;
        text = 0;
        text_chars = 0;
-       text_bfrsz = 0;
        justify_title = 0;
        left = 0;  center = 0;  right = 0;
        top = 0;   mid = 0;     bottom = 0;
@@ -399,8 +398,6 @@ void TitleWindow::create_objects()
        x += text_title->get_w() + 20;
        int wid = BC_Title::calculate_w(this,"0")*10;
        add_tool(text_chars = new TitleTextChars(x,y,wid));
-       x += text_chars->get_w() + 20;
-       add_tool(text_bfrsz = new TitleTextBfrSz(x,y,wid));
 
        y += text_title->get_h() + margin;
        x = margin;
@@ -569,9 +566,6 @@ void TitleWindow::update_justification()
 void TitleWindow::update_stats()
 {
        text_chars->update(client->config.wlen);
-       int len = MESSAGESIZE - BCTEXTLEN - strlen(text->get_text()) - 1;
-       if( len < 0 ) len = 0;
-       text_bfrsz->update(len);
 }
 
 void TitleWindow::update()
@@ -591,7 +585,7 @@ void TitleWindow::update()
        fade_out->update((float)client->config.fade_out);
        font->update(client->config.font);
        check_style(client->config.font,0);
-       text->update(&client->config.wtext[0]);
+       text->update(client->config.wtext ? &client->config.wtext[0] : L"");
        speed->update(client->config.pixels_per_second);
        outline->update((int64_t)client->config.outline_size);
 #ifdef USE_STROKER
@@ -952,7 +946,7 @@ TitleText::TitleText(TitleMain *client, TitleWindow *window,
        int x, int y, int w, int h)
  : BC_ScrollTextBox(window, x, y, w,
                BC_TextBox::pixels_to_rows(window, MEDIUMFONT, h),
-               client->config.wtext, 8192)
+               client->config.wtext, 0)
 {
        this->client = client;
        this->window = window;
@@ -972,22 +966,11 @@ int TitleText::button_press_event()
 int TitleText::handle_event()
 {
        window->fonts_popup->deactivate();
-       int text_len = strlen(get_text());
-       int avail = MESSAGESIZE - BCTEXTLEN;
-       if( text_len >= avail ) { // back off last utf8 char
-               char text[2*sizeof(client->config.wtext)];
-               strcpy(text, get_text());
-               text_len = avail;
-               while( text_len > 0 && (text[text_len-1] & 0xc0) == 0x80 )
-                       text[--text_len] = 0;
-               if( text_len > 0 )
-                       text[--text_len] = 0;
-               update(text);
-       }
-       int len =  sizeof(client->config.wtext) / sizeof(wchar_t);
-       wcsncpy(client->config.wtext, get_wtext(), len);
-       client->config.wtext[len-1] = 0;
-       client->config.wlen = wcslen(client->config.wtext);
+       const wchar_t *wtext = get_wtext();
+       long wlen = wcslen(wtext);
+       client->config.demand(wlen);
+       wcsncpy(client->config.wtext, wtext, client->config.wsize);
+       client->config.wlen = wlen;
        window->update_stats();
        window->send_configure_change();
        return 1;
@@ -1006,20 +989,6 @@ int TitleTextChars::update(int n)
        return BC_Title::update(text, 0);
 }
 
-TitleTextBfrSz::TitleTextBfrSz(int x, int y, int w)
- : BC_Title(x, y, "", MEDIUMFONT, -1, 0, w)
-{
-}
-TitleTextBfrSz::~TitleTextBfrSz()
-{
-}
-int TitleTextBfrSz::update(int n)
-{
-       char text[BCSTRLEN];
-       sprintf(text, _("bfrsz: %d  "),n);
-       return BC_Title::update(text, 0);
-}
-
 
 TitleDropShadow::TitleDropShadow(TitleMain *client, TitleWindow *window, int x, int y)
  : BC_TumbleTextBox(window, client->config.dropshadow,
index 0a5122b485470e6a4f3ca16c9a4d5229b3b1eea9..99cd3e18588a780b4ea35b6b48294388655136e7 100644 (file)
@@ -55,7 +55,6 @@ class TitleFade;
 class TitleFont;
 class TitleText;
 class TitleTextChars;
-class TitleTextBfrSz;
 class TitleX;
 class TitleY;
 class TitleW;
@@ -159,7 +158,6 @@ public:
        BC_Title *text_title;
        TitleText *text;
        TitleTextChars *text_chars;
-       TitleTextBfrSz *text_bfrsz;
        BC_Title *justify_title;
        TitleLeft *left;
        TitleCenter *center;
@@ -381,13 +379,6 @@ public:
        TitleTextChars(int x, int y, int w);
        ~TitleTextChars();
 };
-class TitleTextBfrSz : public BC_Title
-{
-public:
-       int update(int n);
-       TitleTextBfrSz(int x, int y, int w);
-       ~TitleTextBfrSz();
-};
 
 class TitleX : public BC_TumbleTextBox
 {
index e69f8087b4249e05c5c30ba0e6db69ba4465b187..ce965b0cd61b7cd8b2d90263db7c66372c4a5fbe 100644 (file)
@@ -124,7 +124,7 @@ void TranslateMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
 // Store data
        output.tag.set_title("TRANSLATE");
@@ -148,7 +148,7 @@ void TranslateMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 96364d9a77ea02c37b5f933fff5c24d5c5f6c20f..1de85f0a1da4a1b8c06fb2fa1fa0355874247631 100644 (file)
@@ -133,7 +133,7 @@ void UnsharpMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("UNSHARP");
 
        output.tag.set_property("RADIUS", config.radius);
@@ -150,7 +150,7 @@ void UnsharpMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 0744e83c60824b6ddaaf955d7fd085594b3b23bd..76b7cf720740f5d9a1116a79b71d0c608c6ae664 100644 (file)
@@ -248,7 +248,7 @@ void VideoScopeEffect::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("VIDEOSCOPE");
 
 
@@ -273,7 +273,7 @@ void VideoScopeEffect::save_data(KeyFrame *keyframe)
 void VideoScopeEffect::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 8e1172963b8b73dfb8b3581003543d4083584234..5987558e228a0efa83db10f878898bfc2b3b2ffe 100644 (file)
@@ -367,7 +367,7 @@ int Vocoder::is_multichannel() { return 1; }
 void Vocoder::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        while(!result)
@@ -390,7 +390,7 @@ void Vocoder::read_data(KeyFrame *keyframe)
 void Vocoder::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("VOCODER");
        output.tag.set_property("WETNESS", config.wetness);
index 5e2ab3a4d9401c3b7d71308fb84dd637c9cbc8b3..03f537f083e5af841d65753eb366ea737166cba4 100644 (file)
@@ -473,7 +473,7 @@ void WaveEffect::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("WAVE");
        output.tag.set_property("MODE", config.mode);
        output.tag.set_property("REFLECTIVE", config.reflective);
@@ -491,7 +491,7 @@ void WaveEffect::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index 25be3bc9b0f30f011c423d1d9597d10ddff264dc..af514fe74f748440bd666e9bbc133a908a6dfc2b 100644 (file)
@@ -394,7 +394,7 @@ void WhirlEffect::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("WHIRL");
        output.tag.set_property("ANGLE", config.angle);
@@ -412,7 +412,7 @@ void WhirlEffect::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
 
index 71b1d722ef4b6f7b947a88e6353489a57e4dfb63..6b26694a11dfd6c4cf176420ecf79197a5948a73 100644 (file)
@@ -154,7 +154,7 @@ NEW_WINDOW_MACRO(WipeMain, WipeWindow)
 void WipeMain::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("WIPE");
        output.tag.set_property("DIRECTION", direction);
        output.append_tag();
@@ -168,7 +168,7 @@ void WipeMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index c6b7313444d28c91d465e1bd6f8d80a793c8ccd0..9e7dce83f0a6bff18d9130dcf6a789a0dda06ea7 100644 (file)
@@ -229,7 +229,7 @@ void YUVEffect::update_gui()
 void YUVEffect::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("YUV");
        output.tag.set_property("Y", config.y);
        output.tag.set_property("U", config.u);
@@ -244,7 +244,7 @@ void YUVEffect::save_data(KeyFrame *keyframe)
 void YUVEffect::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
        while(!input.read_tag())
        {
                if(input.tag.title_is("YUV"))
index 79ca1859529a5f47b80814d94afba66ad5d44837..100541f5c27a553928f76a44a5e160735f1a41ed 100644 (file)
@@ -237,7 +237,7 @@ void yuv411Main::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
 
        output.tag.set_title("YUV411");
        output.tag.set_property("OFFSET",config.offset);
@@ -271,7 +271,7 @@ void yuv411Main::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;
        config.avg_vertical = config.int_horizontal = 0;
index 7298efcb763402cb5c1571c9976bf311b803c995..bab83bb432f1da07bf7551bb0a55af083e70153a 100644 (file)
@@ -235,7 +235,7 @@ void YUVShiftEffect::update_gui()
 void YUVShiftEffect::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("YUVSHIFT");
        output.tag.set_property("Y_DX", config.y_dx);
        output.tag.set_property("Y_DY", config.y_dy);
@@ -253,7 +253,7 @@ void YUVShiftEffect::save_data(KeyFrame *keyframe)
 void YUVShiftEffect::read_data(KeyFrame *keyframe)
 {
        FileXML input;
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
        while(!input.read_tag())
        {
                if(input.tag.title_is("YUVSHIFT"))
index 3a682030b9695e3293970f5c1aea3281292be423..a7e26353c7dc55f407356f7af3dcd682e115d718 100644 (file)
@@ -156,7 +156,7 @@ int ZoomMain::uses_gui() { return 1; }
 void ZoomMain::save_data(KeyFrame *keyframe)
 {
        FileXML output;
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("ZOOMTRANSITION");
        output.tag.set_property("MAGNIFICATION_X", max_magnification_x);
        output.tag.set_property("MAGNIFICATION_Y", max_magnification_y);
@@ -170,7 +170,7 @@ void ZoomMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        while(!input.read_tag())
        {
index 4499ea292c26bfdb2828f763815d313edd02e443..8336708732aa833ee1fd45756879e19236a2580c 100644 (file)
@@ -608,7 +608,7 @@ void ZoomBlurMain::save_data(KeyFrame *keyframe)
        FileXML output;
 
 // cause data to be stored directly in text
-       output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+       output.set_shared_output(keyframe->xbuf);
        output.tag.set_title("ZOOMBLUR");
 
        output.tag.set_property("X", config.x);
@@ -630,7 +630,7 @@ void ZoomBlurMain::read_data(KeyFrame *keyframe)
 {
        FileXML input;
 
-       input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
+       input.set_shared_input(keyframe->xbuf);
 
        int result = 0;