Quick Sign In:  

Forum: VirtualDJ Skins

Topic: placeholders and video with clipmasks

This topic is old and might contain outdated or incorrect information.

NicotuxHome userMember since 2014
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 ?
 

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.
 

Posted Fri 27 Sep 19 @ 12:15 pm
NicotuxHome userMember since 2014
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
 

Posted Fri 27 Sep 19 @ 3:44 pm
NicotuxHome userMember since 2014
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

 

Posted Fri 04 Oct 19 @ 8:26 pm


(Old topics and forums are automatically closed)