software/videomixer: support additive blending (enable with SW1, status on LED)
This commit is contained in:
parent
ac64701e19
commit
a39bf8ca7b
|
@ -25,20 +25,51 @@ static int scale_pot(int raw, int range)
|
||||||
return scaled;
|
return scaled;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pots_service(void)
|
static void regular_blend(int p0, int p1)
|
||||||
{
|
{
|
||||||
static int last_event;
|
|
||||||
int blackout;
|
int blackout;
|
||||||
int crossfade;
|
int crossfade;
|
||||||
|
|
||||||
|
blackout = scale_pot(p0, 256);
|
||||||
|
crossfade = scale_pot(p1, 255);
|
||||||
|
|
||||||
|
fb_blender_f0_write(crossfade*blackout >> 8);
|
||||||
|
fb_blender_f1_write((255-crossfade)*blackout >> 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void additive_blend(int p0, int p1)
|
||||||
|
{
|
||||||
|
fb_blender_f0_write(scale_pot(p0, 255));
|
||||||
|
fb_blender_f1_write(scale_pot(p1, 255));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void pots_service(void)
|
||||||
|
{
|
||||||
|
static int last_event;
|
||||||
|
static int additive_blend_enabled;
|
||||||
|
static int old_btn;
|
||||||
|
int btn;
|
||||||
|
int p0, p1;
|
||||||
|
|
||||||
if(elapsed(&last_event, identifier_frequency_read()/32)) {
|
if(elapsed(&last_event, identifier_frequency_read()/32)) {
|
||||||
|
btn = buttons_in_read() & 0x1;
|
||||||
|
if(btn && !old_btn) {
|
||||||
|
additive_blend_enabled = !additive_blend_enabled;
|
||||||
|
if(additive_blend_enabled)
|
||||||
|
leds_out_write(leds_out_read() | 0x1);
|
||||||
|
else
|
||||||
|
leds_out_write(leds_out_read() & ~0x1);
|
||||||
|
}
|
||||||
|
old_btn = btn;
|
||||||
|
|
||||||
pots_start_busy_write(1);
|
pots_start_busy_write(1);
|
||||||
while(pots_start_busy_read());
|
while(pots_start_busy_read());
|
||||||
blackout = scale_pot(pots_res0_read(), 256);
|
p0 = pots_res0_read();
|
||||||
crossfade = scale_pot(pots_res1_read(), 255);
|
p1 = pots_res1_read();
|
||||||
|
if(!additive_blend_enabled)
|
||||||
fb_blender_f0_write(crossfade*blackout >> 8);
|
regular_blend(p0, p1);
|
||||||
fb_blender_f1_write((255-crossfade)*blackout >> 8);
|
else
|
||||||
|
additive_blend(p0, p1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue