I really like placeholders ... and clipmasks for video element
so that i tested mixing both in a rewrite of custom pad/Pad pressure controlled videoskin with 8 OSD
https://imgdb.net/6814
https://imgdb.net/6815
https://imgdb.net/6821
NOTE: placeholders is used for the variable controlling insert video transparency $jv1l up to $jv8l giving '$jv[WINDOW]l'
The placeholders have "*" and visibility is used instead of condition because everything needs to be dynamic
Pads / Pressure were already controlling Mix video with the help of an old plugin, deck, Extra video windows, OSD natively & global intensity by the use of plugins
now added shape natively
- the "set" verb not working for sliders anymore have found its elegant workaround
<define class="OSDvideo" placeholders="*window,*deck,*shape">
<video class="extravideosize" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop">
<clipmask><pos x="640+640" y="360+360"/></clipmask>
<clipmask class="[SHAPE]"/></clipmask>
</video>
"pos" is not honor for the clipmask, because not allowed here
class is not honor may not be allowed here as well
Another strange react :
<video width="640" height="360" source="deck" deck="[DECK]" visibility="var '$jv[WINDOW]s' 0 ? get_var '$jv[WINDOW]l' : false" letterboxing="crop" linkdrop="false"/>
will not honor visibility level visibility .... the get_var "non bug" ?
<panel visibility="var '$jv[WINDOW]s' 0">
<video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l' : false" letterboxing="crop" linkdrop="false"/>
</panel>
uggly but is working
final abomination for all three workarounds :
<define class="OSDvideo" placeholders="*window,*deck">
<panel visibility="var '$jv[WINDOW]s' 1"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"> <clipmask x="0" y="0" /> </video> </panel>
<panel visibility="var '$jv[WINDOW]s' 2"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"> <clipmask x="640" y="0"/> </video> </panel>
<panel visibility="var '$jv[WINDOW]s' 3"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"> <clipmask x="640+640" y="0"/> </video> </panel>
<panel visibility="var '$jv[WINDOW]s' 4"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"> <clipmask x="0" y="360"/> </video> </panel>
<panel visibility="var '$jv[WINDOW]s' 5"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"> <clipmask x="640" y="360"/> </video> </panel>
<panel visibility="var '$jv[WINDOW]s' 6"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"> <clipmask x="640+640" y="360"/> </video> </panel>
<panel visibility="var '$jv[WINDOW]s' 7"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"> <clipmask x="0" y="720"/> </video> </panel>
<panel visibility="var '$jv[WINDOW]s' 8"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"> <clipmask x="640" y="720"/> </video> </panel>
<panel visibility="var '$jv[WINDOW]s' 9"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"> <clipmask x="640+640" y="720"/> </video> </panel>
<panel visibility="var '$jv[WINDOW]s' 0"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"/> </panel>
</define>
Next evolution may be OSD dynamic placement ? loadable shapeset ?
so that i tested mixing both in a rewrite of custom pad/Pad pressure controlled videoskin with 8 OSD
https://imgdb.net/6814
https://imgdb.net/6815
https://imgdb.net/6821
NOTE: placeholders is used for the variable controlling insert video transparency $jv1l up to $jv8l giving '$jv[WINDOW]l'
The placeholders have "*" and visibility is used instead of condition because everything needs to be dynamic
Pads / Pressure were already controlling Mix video with the help of an old plugin, deck, Extra video windows, OSD natively & global intensity by the use of plugins
now added shape natively
- the "set" verb not working for sliders anymore have found its elegant workaround
<define class="OSDvideo" placeholders="*window,*deck,*shape">
<video class="extravideosize" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop">
<clipmask><pos x="640+640" y="360+360"/></clipmask>
<clipmask class="[SHAPE]"/></clipmask>
</video>
"pos" is not honor for the clipmask, because not allowed here
class is not honor may not be allowed here as well
Another strange react :
<video width="640" height="360" source="deck" deck="[DECK]" visibility="var '$jv[WINDOW]s' 0 ? get_var '$jv[WINDOW]l' : false" letterboxing="crop" linkdrop="false"/>
will not honor visibility level visibility .... the get_var "non bug" ?
<panel visibility="var '$jv[WINDOW]s' 0">
<video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l' : false" letterboxing="crop" linkdrop="false"/>
</panel>
uggly but is working
final abomination for all three workarounds :
<define class="OSDvideo" placeholders="*window,*deck">
<panel visibility="var '$jv[WINDOW]s' 1"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"> <clipmask x="0" y="0" /> </video> </panel>
<panel visibility="var '$jv[WINDOW]s' 2"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"> <clipmask x="640" y="0"/> </video> </panel>
<panel visibility="var '$jv[WINDOW]s' 3"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"> <clipmask x="640+640" y="0"/> </video> </panel>
<panel visibility="var '$jv[WINDOW]s' 4"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"> <clipmask x="0" y="360"/> </video> </panel>
<panel visibility="var '$jv[WINDOW]s' 5"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"> <clipmask x="640" y="360"/> </video> </panel>
<panel visibility="var '$jv[WINDOW]s' 6"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"> <clipmask x="640+640" y="360"/> </video> </panel>
<panel visibility="var '$jv[WINDOW]s' 7"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"> <clipmask x="0" y="720"/> </video> </panel>
<panel visibility="var '$jv[WINDOW]s' 8"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"> <clipmask x="640" y="720"/> </video> </panel>
<panel visibility="var '$jv[WINDOW]s' 9"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"> <clipmask x="640+640" y="720"/> </video> </panel>
<panel visibility="var '$jv[WINDOW]s' 0"><video width="640" height="360" source="deck" deck="[DECK]" visibility="get_var '$jv[WINDOW]l'" letterboxing="crop" linkdrop="false"/> </panel>
</define>
Next evolution may be OSD dynamic placement ? loadable shapeset ?
Posted Fri 27 Sep 19 @ 11:38 am
Currently there's a limitation. Only the first *placeholder get's replaced per string.
In other words:
<define class="MyButton" placeholders="*valuea,*valueb" .../>
Then:
<button class="MyButton" x="+5+[VALUEA]" y="+[VALUEA]" width="[VALUEA]-[VALUEB]" height="[VALUEA]"/>
On this example, x, y and height will get replaced properly. However on width, only the [VALUEA] will get replaced. Valueb will get ignored.
On the same manner (borrowed from your code above)
visibility="var '$jv[WINDOW]s' 0 ? get_var '$jv[WINDOW]l' : false" won't work. Because it uses 2 placeholders inside the same string.
In other words:
<define class="MyButton" placeholders="*valuea,*valueb" .../>
Then:
<button class="MyButton" x="+5+[VALUEA]" y="+[VALUEA]" width="[VALUEA]-[VALUEB]" height="[VALUEA]"/>
On this example, x, y and height will get replaced properly. However on width, only the [VALUEA] will get replaced. Valueb will get ignored.
On the same manner (borrowed from your code above)
visibility="var '$jv[WINDOW]s' 0 ? get_var '$jv[WINDOW]l' : false" won't work. Because it uses 2 placeholders inside the same string.
Posted Fri 27 Sep 19 @ 12:15 pm
Ok, good to know
really fine these are text based replace thus may appear anywhere even in verbs or variable names !!
50 lines - including the extra needed to workaround - to add 8 windows - any deck up to 8 different - OSD windows shapable with transparency everything being dynamic
This time VDJscripts become more compact and versatile
Thanks
really fine these are text based replace thus may appear anywhere even in verbs or variable names !!
50 lines - including the extra needed to workaround - to add 8 windows - any deck up to 8 different - OSD windows shapable with transparency everything being dynamic
This time VDJscripts become more compact and versatile
Thanks
Posted Fri 27 Sep 19 @ 3:44 pm
Ported to vectorial & new skin engine:
Skins addon:
- Custom set of 8 extra floating video windows assignable to any decks
- Custom Bigpadpage all 32 buttons with all 32 pressure sliders
Video skin:
- Custom JustVideos Video_skin for multiple OSD + Updated for shapes
Pad page:
The Extra 8 videos pad to control extra windows & OSD + Updated for shapes
code size reduced by a factor of 10
only one issue after all : not only placeholders can't be used twice in string, tooltips don't like placeholders
Result : using skin OLD:6 DECKS
CPU: code duo E6700 @3.2Ghz & internal GPU intel G45
https://imgdb.net/6913
All 8 extra video activated,
Six different decks playing
Only 4 displaying on Master output, all within a different shape
Other 2 and extra main in their own window
One deck duplicated on 2 screens
2 are transparent
Master resized to 2/3 within a shape
Skins addon:
- Custom set of 8 extra floating video windows assignable to any decks
- Custom Bigpadpage all 32 buttons with all 32 pressure sliders
Video skin:
- Custom JustVideos Video_skin for multiple OSD + Updated for shapes
Pad page:
The Extra 8 videos pad to control extra windows & OSD + Updated for shapes
code size reduced by a factor of 10
only one issue after all : not only placeholders can't be used twice in string, tooltips don't like placeholders
Result : using skin OLD:6 DECKS
CPU: code duo E6700 @3.2Ghz & internal GPU intel G45
https://imgdb.net/6913
All 8 extra video activated,
Six different decks playing
Only 4 displaying on Master output, all within a different shape
Other 2 and extra main in their own window
One deck duplicated on 2 screens
2 are transparent
Master resized to 2/3 within a shape
Posted Fri 04 Oct 19 @ 8:26 pm