Page 1 of 1
{hdr} ERROR: Binding "Video[0][colour_primaries]": undefined
Posted: 08 May 2019, 08:52
by stephen147
The {hdr} expression is throwing an error
Binding "Video[0][colour_primaries]": undefined.
Checked on 230 test files and 2 of them are receiving this error.
Code: Select all
FileBot 4.8.5 (r6224)
JNA Native: 5.2.2
MediaInfo: 18.12
7-Zip-JBinding: 9.20
Chromaprint: fpcalc version 1.4.2
Extended Attributes: OK
Unicode Filesystem: OK
Script Bundle: 2019-04-30 (r563)
Groovy: 2.5.6
JRE: OpenJDK Runtime Environment 11.0.2
JVM: 64-bit OpenJDK 64-Bit Server VM
CPU/MEM: 32 Core / 29 GB Max Memory / 52 MB Used Memory
OS: Windows 10 (amd64)
Package: APPX
License: Microsoft Store License
Done ?(?????)?
Re: {hdr} ERROR: Binding "Video[0][colour_primaries]": undefined
Posted: 08 May 2019, 09:41
by rednoah

Are these 2 files supposed to be HDR or not?
{hdr} will return HDR for HDR files. It will be undefined for non-HDR files, and display some sort of information message in the format debugger.
You can view raw MediaInfo fields that
{hdr} is based on like so:
viewtopic.php?f=5&t=4285
Re: {hdr} ERROR: Binding "Video[0][colour_primaries]": undefined
Posted: 08 May 2019, 10:40
by stephen147
They are not HDR in this case.
Retuns:
Code: Select all
Binding "colour_primaries": undefined
which is a similar error for the {hdr} binding.
Re: {hdr} ERROR: Binding "Video[0][colour_primaries]": undefined
Posted: 08 May 2019, 11:55
by rednoah
Sounds like it's working perfectly fine then. FileBot is just telling your that one of your bindings is not yielding a value, which is perfectly fine if it's not supposed to.

What did you expect to happen when
{hdr} is used on non-HDR files?
Re: {hdr} ERROR: Binding "Video[0][colour_primaries]": undefined
Posted: 08 May 2019, 12:52
by stephen147
Well, this code is giving an error
Binding "hdr": java.lang.NullPointerException
Code: Select all
{self.hd == 'SD' ? '' : {self.hdr ? self.hdr + bitdepth + 'bit' : 'non-HDR'}}
I want to check if it's not
SD then put
{hdr} if it exists else use the string
non-HDR.
Re: {hdr} ERROR: Binding "Video[0][colour_primaries]": undefined
Posted: 08 May 2019, 13:22
by rednoah
1.
stephen147 wrote: ↑08 May 2019, 12:52
I want to check if it's not
SD then put
{hdr} if it exists else use the string
non-HDR.
I'd express this particular logic like so:
Code: Select all
{if (hd =~ 'HD') any{hdr + bitdepth + 'bit'}{'non-HDR'}}
2.
Here's some general documentation you wanna be aware of when dealing with undefined bindings:
viewtopic.php?f=5&t=1895
Re: {hdr} ERROR: Binding "Video[0][colour_primaries]": undefined
Posted: 08 May 2019, 13:51
by stephen147
Thanks once AGAIN!
So with the
+~ operater. What is the difference in using
!= like my example below?
Code: Select all
{if (hd != 'SD') any{'non-HDR'}{hdr + bitdepth + 'bit'}}
Re: {hdr} ERROR: Binding "Video[0][colour_primaries]": undefined
Posted: 08 May 2019, 13:52
by rednoah
1.
Both work. I just prefer to say "hd must contain HD"
(i.e. matches both HD and UHD) rather than "hd must not be SD". Positives are always nicer than negatives. Also, ! has special meaning in bash, so avoid if possible.
2.
any{'non-HDR'}{hdr + bitdepth + 'bit'} is the same as
'non-HDR' because the first closure will always successfully return
'non-HDR' (a valid value non-null non-empty non-error value) so it'll never fail-over to the second one.
This is the same code, just more verbose, which might make it more clear how the if-then-else code path works:
Code: Select all
{
if (hd =~ 'HD') {
return any{hdr + bitdepth + 'bit'}{'non-HDR'}
} else {
return null
}
}
Re: {hdr} ERROR: Binding "Video[0][colour_primaries]": undefined
Posted: 08 May 2019, 22:49
by stephen147
rednoah wrote: ↑08 May 2019, 13:52
1.
Both work. I just prefer to say "hd must contain HD"
(i.e. matches both HD and UHD) rather than "hd must not be SD". Positives are always nicer than negatives. Also, ! has special meaning in bash, so avoid if possible.
I don't mind things not nice sometimes, this doesn't wreak my OCD. Have it not matching SD future proofs it. Who knows what other defs are coming. I suppose 8k is considered UHD so that could be a while before 16K makes an appearance!
rednoah wrote: ↑08 May 2019, 13:52
2.
any{'non-HDR'}{hdr + bitdepth + 'bit'} is the same as
'non-HDR' because the first closure will always successfully return
'non-HDR' (a valid value non-null non-empty non-error value) so it'll never fail-over to the second one.
This is the same code, just more verbose, which might make it more clear how the if-then-else code path works:
Code: Select all
{
if (hd =~ 'HD') {
return any{hdr + bitdepth + 'bit'}{'non-HDR'}
} else {
return null
}
}
Thanks, this is what I was struggling with before. I can see the syntax now for the if-then-else. Easy when it clicks.
My expression I settled on is:
Code: Select all
{if (hd =~ 'SD') {'non-HDR'} else any{hdr + bitdepth + 'bit'}{'non-HDR'}}
BTW, I've looked and found that the
=~ operator is the equals operator only with regex for the
if statement.
https://stackoverflow.com/a/12454780/8262102