fix mask vframe setup, add unshared vframe constructor
[goodguy/history.git] / cinelerra-5.1 / plugins / rgbshift / rgbshift.C
index e192f25fb0cde96b6df6001a9e2cdab26ef69692..165680a2f7b5c821dd0c648b32c0b744d2b9b7f1 100644 (file)
@@ -2,21 +2,21 @@
 /*
  * CINELERRA
  * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
- * 
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * 
+ *
  */
 
 #include "bcdisplayinfo.h"
@@ -25,7 +25,7 @@
 #include "filexml.h"
 #include "guicast.h"
 #include "language.h"
-#include "cicolors.h"
+#include "bccolors.h"
 #include "pluginvclient.h"
 #include "vframe.h"
 
@@ -43,10 +43,10 @@ public:
 
        void copy_from(RGBShiftConfig &src);
        int equivalent(RGBShiftConfig &src);
-       void interpolate(RGBShiftConfig &prev, 
-               RGBShiftConfig &next, 
-               long prev_frame, 
-               long next_frame, 
+       void interpolate(RGBShiftConfig &prev,
+               RGBShiftConfig &next,
+               long prev_frame,
+               long next_frame,
                long current_frame);
 
        int r_dx, r_dy, g_dx, g_dy, b_dx, b_dy;
@@ -120,10 +120,10 @@ int RGBShiftConfig::equivalent(RGBShiftConfig &src)
                EQUIV(r_dy, src.r_dy) && EQUIV(g_dy, src.g_dy) && EQUIV(b_dy, src.b_dy);
 }
 
-void RGBShiftConfig::interpolate(RGBShiftConfig &prev, 
-       RGBShiftConfig &next, 
-       long prev_frame, 
-       long next_frame, 
+void RGBShiftConfig::interpolate(RGBShiftConfig &prev,
+       RGBShiftConfig &next,
+       long prev_frame,
+       long next_frame,
        long current_frame)
 {
        double next_scale = (double)(current_frame - prev_frame) / (next_frame - prev_frame);
@@ -209,7 +209,7 @@ RGBShiftEffect::~RGBShiftEffect()
 }
 
 const char* RGBShiftEffect::plugin_title() { return _("RGBShift"); }
-int RGBShiftEffect::is_realtime() { return 1; } 
+int RGBShiftEffect::is_realtime() { return 1; }
 
 
 NEW_WINDOW_MACRO(RGBShiftEffect, RGBShiftWindow)
@@ -268,9 +268,6 @@ void RGBShiftEffect::read_data(KeyFrame *keyframe)
        }
 }
 
-
-static YUV yuv_static;
-
 #define RGB_MACRO(type, temp_type, components) \
 { \
        for(int i = 0; i < h; i++) { \
@@ -310,11 +307,11 @@ static YUV yuv_static;
                        temp_type g = gp ? gp[1] : 0; \
                        temp_type b = bp ? bp[2] : 0; \
                        if( sizeof(type) == 4 ) \
-                               yuv_static.rgb_to_yuv_f(r, g, b, y, u, v); \
+                               YUV::yuv.rgb_to_yuv_f(r, g, b, y, u, v); \
                        else if( sizeof(type) == 2 ) \
-                               yuv_static.rgb_to_yuv_16(r, g, b, y, u, v); \
+                               YUV::yuv.rgb_to_yuv_16(r, g, b, y, u, v); \
                        else \
-                               yuv_static.rgb_to_yuv_8(r, g, b, y, u, v); \
+                               YUV::yuv.rgb_to_yuv_8(r, g, b, y, u, v); \
                        out_row[0] = y; \
                        out_row[1] = u; \
                        out_row[2] = v; \
@@ -345,7 +342,7 @@ int RGBShiftEffect::process_realtime(VFrame *input, VFrame *output)
                        delete temp_frame;  temp_frame = 0;
                }
                if( !temp_frame )
-                       temp_frame = new VFrame(w, h, color_model);
+                       temp_frame = new VFrame(w, h, color_model, 0);
                frame = temp_frame;
                if( color_model != input->get_color_model() )
                        BC_CModels::transfer(frame->get_rows(), input->get_rows(),