Updated Frame Limiting Method. Fixes #6

This commit is contained in:
Digital Artifex
2025-11-04 11:13:27 -05:00
parent 9303dbf589
commit 2bbd4f806d

View File

@@ -88,16 +88,16 @@ Item
// even when the video is the source of an item being limited // even when the video is the source of an item being limited
// in this way // in this way
// if(type === ShaderChannel.ShaderChannel) if(type === ShaderChannel.ShaderChannel)
// { {
// active = true; active = true;
// active = false; active = false;
// return; return;
// } }
// if(active === false) if(active === false)
// active = true; active = true;
} }
property bool invert property bool invert
@@ -383,7 +383,7 @@ Item
{ {
id: channelSource0 id: channelSource0
sourceItem: channel.iChannel0 ? channel.iChannel0 : null sourceItem: channel.iChannel0 ? channel.iChannel0 : null
live: channel.active live: Qt.binding(() => { return isLive(); })
smooth: true smooth: true
sourceRect: sourceItem ? Qt.rect(0,0, sourceItem.width, sourceItem.height) : Qt.rect(0,0,0,0) sourceRect: sourceItem ? Qt.rect(0,0, sourceItem.width, sourceItem.height) : Qt.rect(0,0,0,0)
wrapMode: ShaderEffectSource.ClampToEdge wrapMode: ShaderEffectSource.ClampToEdge
@@ -396,13 +396,21 @@ Item
height: channel.iResolution.y height: channel.iResolution.y
visible: false visible: false
format: ShaderEffectSource.RGBA8 format: ShaderEffectSource.RGBA8
function isLive()
{
if(!channel.iChannel0 || channel.iChannel0 === undefined || channel.iChannel0.type === ShaderChannel.ImageChannel)
return false;
return channel.iChannel0.type != ShaderChannel.VideoChannel && channel.active;
}
} }
ShaderEffectSource ShaderEffectSource
{ {
id: channelSource1 id: channelSource1
sourceItem: channel.iChannel1 ? channel.iChannel1 : null sourceItem: channel.iChannel1 ? channel.iChannel1 : null
live: channel.active live: Qt.binding(() => { return isLive(); })
smooth: false smooth: false
sourceRect: sourceItem ? Qt.rect(0,0, sourceItem.width, sourceItem.height) : Qt.rect(0,0,0,0) sourceRect: sourceItem ? Qt.rect(0,0, sourceItem.width, sourceItem.height) : Qt.rect(0,0,0,0)
wrapMode: ShaderEffectSource.ClampToEdge wrapMode: ShaderEffectSource.ClampToEdge
@@ -415,13 +423,21 @@ Item
height: channel.iResolution.y height: channel.iResolution.y
visible: false visible: false
format: ShaderEffectSource.RGBA8 format: ShaderEffectSource.RGBA8
function isLive()
{
if(!channel.iChannel1 || channel.iChannel1 === undefined || channel.iChannel1.type === ShaderChannel.ImageChannel)
return false;
return channel.iChannel1.type != ShaderChannel.VideoChannel && channel.active;
}
} }
ShaderEffectSource ShaderEffectSource
{ {
id: channelSource2 id: channelSource2
sourceItem: channel.iChannel2 ? channel.iChannel2 : null sourceItem: channel.iChannel2 ? channel.iChannel2 : null
live: channel.active live: Qt.binding(() => { return isLive(); })
smooth: false smooth: false
sourceRect: sourceItem ? Qt.rect(0,0, sourceItem.width, sourceItem.height) : Qt.rect(0,0,0,0) sourceRect: sourceItem ? Qt.rect(0,0, sourceItem.width, sourceItem.height) : Qt.rect(0,0,0,0)
wrapMode: ShaderEffectSource.ClampToEdge wrapMode: ShaderEffectSource.ClampToEdge
@@ -434,13 +450,21 @@ Item
height: channel.iResolution.y height: channel.iResolution.y
visible: false visible: false
format: ShaderEffectSource.RGBA8 format: ShaderEffectSource.RGBA8
function isLive()
{
if(!channel.iChannel2 || channel.iChannel2 === undefined || channel.iChannel2.type === ShaderChannel.ImageChannel)
return false;
return channel.iChannel2.type != ShaderChannel.VideoChannel && channel.active;
}
} }
ShaderEffectSource ShaderEffectSource
{ {
id: channelSource3 id: channelSource3
sourceItem: channel.iChannel3 ? channel.iChannel3 : null sourceItem: channel.iChannel3 ? channel.iChannel3 : null
live: channel.active live: Qt.binding(() => { return isLive(); })
smooth: false smooth: false
sourceRect: sourceItem ? Qt.rect(0,0, sourceItem.width, sourceItem.height) : Qt.rect(0,0,0,0) sourceRect: sourceItem ? Qt.rect(0,0, sourceItem.width, sourceItem.height) : Qt.rect(0,0,0,0)
wrapMode: ShaderEffectSource.ClampToEdge wrapMode: ShaderEffectSource.ClampToEdge
@@ -453,6 +477,14 @@ Item
height: channel.iResolution.y height: channel.iResolution.y
visible: false visible: false
format: ShaderEffectSource.RGBA8 format: ShaderEffectSource.RGBA8
function isLive()
{
if(!channel.iChannel3 || channel.iChannel3 === undefined || channel.iChannel3.type === ShaderChannel.ImageChannel)
return false;
return channel.iChannel3.type != ShaderChannel.VideoChannel && channel.active;
}
} }
// recursive frame buffer // recursive frame buffer