# transfer switch
print("#include \"xfer.h\"", file=fd)
print("", file=fd)
-print("void %sxfer()" % class_qual, file=fd)
+print("int %sxfer()" % class_qual, file=fd)
print("{", file=fd)
mx_no = mx_bcmdl + 1
print(" static xfer_fn xfns[%d][%d] = {" % (mx_no, mx_no), file=fd)
print("}, ", file=fd)
print(" }; ", file=fd)
print(" xfn = xfns[in_colormodel][out_colormodel];", file=fd)
-print(" xfer_slices(out_w*out_h/0x80000+1);", file=fd)
+print(" return xfer_slices(out_w*out_h/0x80000+1);", file=fd)
print("}", file=fd)
print("", file=fd)
print("#include \"bcxfer.C\"", file=fd)
int in_x, int in_y, int in_w, int in_h, int in_rowspan,
int bg_color);
// paint buffer solid color
- static void init_color(int color, int alpha,
+ static int init_color(int color, int alpha,
unsigned char **output_rows, int out_colormodel,
unsigned char *out_yp, unsigned char *out_up, unsigned char *out_vp,
int out_x, int out_y, int out_w, int out_h, int out_rowspan);
out_yp, out_up, out_vp, in_yp, in_up, in_vp,
in_x, in_y, in_w, in_h, out_x, out_y, out_w, out_h,
in_colormodel, out_colormodel, bg_color,0xff, in_rowspan, out_rowspan);
- xfer.xfer();
+ if( xfer.xfer() )
+ printf("BC_CModels::transfer failed: %d to %d\n", in_colormodel, out_colormodel);
}
void BC_CModels::transfer(
output_ptrs, out_colormodel, out_x, out_y, out_w, out_h, out_rowspan,
input_ptrs, in_colormodel, in_x, in_y, in_w, in_h, in_rowspan,
bg_color,0xff);
- xfer.xfer();
+ if( xfer.xfer() )
+ printf("BC_CModels::transfer failed: %d to %d\n", in_colormodel, out_colormodel);
}
// color is rgb
-void BC_CModels::init_color(int color, int alpha,
+int BC_CModels::init_color(int color, int alpha,
unsigned char **output_rows, int out_colormodel,
unsigned char *out_yp, unsigned char *out_up, unsigned char *out_vp,
int out_x, int out_y, int out_w, int out_h, int out_rowspan)
BC_Xfer xfer(output_rows, 0, out_yp,out_up,out_vp, 0,0,0,
0,0,0,0, out_x,out_y,out_w,out_h, BC_TRANSPARENCY,
out_colormodel, color,alpha, 0, out_rowspan);
- xfer.xfer();
+ return xfer.xfer();
}
// specialized functions
return slicer;
}
-void BC_Xfer::xfer_slices(int slices)
+int BC_Xfer::xfer_slices(int slices)
{
- if( !xfn ) return;
+ if( !xfn ) return 1;
int max_slices = BC_Resources::machine_cpus/2;
if( slices > max_slices ) slices = max_slices;
if( slices < 1 ) slices = 1;
slicers.append(active[i]);
slicers.unlock();
}
+ return 0;
}
BC_Xfer::Slicer::Slicer(BC_Xfer *xp)
uint32_t bg_r, bg_g, bg_b, bg_a;
float bg_fr, bg_fg, bg_fb, bg_fa;
- void xfer();
- void xfer_slices(int slices);
+ int xfer();
+ int xfer_slices(int slices);
typedef void (BC_Xfer::*xfer_fn)(unsigned y0, unsigned y1);
xfer_fn xfn;
void VFrame::clear_frame()
{
- if( clear_color >= 0 ) {
- BC_CModels::init_color(clear_color, clear_alpha, get_rows(), get_color_model(),
- get_y(), get_u(), get_v(), 0,0, get_w(),get_h(), get_bytes_per_line());
- }
- else
- black_frame();
+ if( clear_color >= 0 &&
+ !BC_CModels::init_color(clear_color, clear_alpha,
+ get_rows(), get_color_model(), get_y(), get_u(), get_v(),
+ 0,0, get_w(),get_h(), get_bytes_per_line()) )
+ return;
+ black_frame();
}
void VFrame::rotate90()
Cakewalk and Neophyte themes by Olaf Wolff (CC BY 4.0,
https://creativecommons.org/licenses/by/4.0/)
.
+July 2019 New Features of note:
+ Completion of Masking improvements with Preset Shapes, Center
+ and Normalize buttons, plus x/y scaling in 1 direction only.
+ Provision for usage of Rectified Audio waveforms was added.
+ Spanning Keyframes is now isolated to avoid interference.
June 2019 New Features of note:
Hardware acceleration Nvenc for Nvidia boards rendering in.
More masking improvements to include tracks, solo, & gangs.