Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Capturing and Editing Video > Avisynth Usage

Reply
 
Thread Tools Search this Thread Display Modes
Old 24th February 2015, 15:30   #1  |  Link
Reel.Deel
Registered User
 
Join Date: Mar 2012
Location: Texas
Posts: 1,664
YUV color picker?

Hi,

I was wondering if someone knows of a YUV color picker that can correctly tell you the hex value for a color in the 601/709 (TV and PC range)? Something like this but in YUV: http://www.w3schools.com/tags/ref_colorpicker.asp

I know AvsPmod displays YUV values but it does not have a color picker. There's the also the color presets page in the wiki but colors are for RGB.


Edit: Blankclip has the color_yuv parameter but what is it based on? 601 or 709?

Last edited by Reel.Deel; 24th February 2015 at 15:35.
Reel.Deel is offline   Reply With Quote
Old 24th February 2015, 15:35   #2  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Googled "color picker yuv", seems no shortage of choice
1st on list
http://stnsoft.com/DVD/color_pick.html
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???
StainlessS is offline   Reply With Quote
Old 24th February 2015, 15:38   #3  |  Link
Reel.Deel
Registered User
 
Join Date: Mar 2012
Location: Texas
Posts: 1,664
Yeah, I saw that page while searching yesterday but what gets me is the slight color difference when using a 709 matrix. So I was looking for a something similar to that can tell me the correct value based on the matrix that I want to use.
Reel.Deel is offline   Reply With Quote
Old 24th February 2015, 16:28   #4  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
This any good to you ?

EDIT: Take 3
Code:
Function RGB_2_YUV(Int RGB_Color,String Matrix) {
    RGB_Color=RT_BitAnd(RGB_Color,$FFFFFF)
    BlankClip(Width=16,Height=16,Length=1,Color=RGB_Color)
    c=ConvertToYV12(matrix=matrix)
    current_frame=0
    Y=c.YPlaneMin() U=c.UPlaneMin() V=c.VPlaneMin()
    Col = (((Y*256)+U)*256)+V
    return Col
}

RGB=$FFFFFF
Matrix= "Rec601"             # "Rec601", "Rec709", "PC601", "PC709"


YUV=RGB_2_YUV(RGB,Matrix)
SRGB=RT_Hex(RGB,6)
SYUV=RT_Hex(YUV,6)

Messageclip("RGB = $"+SRGB+" : YUV=$"+SYUV + " (Matrix="+Matrix+")")
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 25th February 2015 at 00:19.
StainlessS is offline   Reply With Quote
Old 24th February 2015, 17:44   #5  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Or this
Code:
Matrix    = "Rec601"             # "Rec601", "Rec709", "PC601", "PC709"
ColorsRGB = "colors_rgb.avsi"
ColorsYUV = "colors_yuv_"+Matrix+".avsi"

Assert(Exist(ColorsRGB),ColorsRGB+" Does not exist")

Exist(ColorsYUV) ? RT_FileDelete(ColorsYUV) : NOP

PAD = 40
INSERT=RT_String("(yuv values [Matrix='%s'])",Matrix)

GSCript("""
    TEXT=RT_ReadTxtFromFile(ColorsRGB)
    LINES=RT_TxtQueryLines(TEXT)
    
    for(i=0,LINES-1) {
        S=RT_TxtGetLine(TEXT,i)
        S=(S!="")?RT_StrReplaceDeep(RT_StrReplace(S,Chr(9)," "),"  "," "):S
        S=(S!="")?RT_StrReplace(S,"(rgb values)",INSERT):S
        While(RT_Ord(S)==32) {S=MidStr(S,2)}
        if(RT_Ord(S)==RT_Ord("#") || RT_Ord(S)==0) {
            S=(RT_Ord(S)==0)?Chr(10):S
            RT_WriteFile(ColorsYUV,"%s",S,Append=True)
        } Else {
            Hx = RT_FindStr(S,"= $")
            Assert(Hx!=0,"Cannot find Dollar")
            SOUT=RT_StrReplace(LeftStr(S,Hx-1),"color_",Matrix+"_",sig=false)
            SOUT=RT_StrPad(SOUT,40)
            RGB=RT_HexValue(S,pos=Hx+3)
            YUV=RGB_2_YUV(RGB,Matrix)
            RT_Writefile(ColorsYUV,"%s= $%0.6X    # RGB = $%0.6X",SOUT,YUV,RGB,Append=True)
        }
    }    
""")
return MessageClip("Done")


Function RGB_2_YUV(Int RGB_Color,String Matrix) {
    RGB_Color=RT_BitAnd(RGB_Color,$FFFFFF)
    BlankClip(Width=16,Height=16,Length=1,Color=RGB_Color)
    c=ConvertToYV12(matrix=matrix)
    current_frame=0
    Y=c.YPlaneMin() U=c.UPlaneMin() V=c.VPlaneMin()
    Col = (((Y*256)+U)*256)+V
    return Col
}
EDITED

Convert Colors_rgb_avsi to YUV file using chosen matrix.

Results: colors_yuv_Rec601.avsi
Code:
# list of common colors (yuv values [Matrix='Rec601'])

# source:
# http://en.wikipedia.org/wiki/List_of_colors
# http://en.wikipedia.org/wiki/X11_color_names
# http://www.cryer.co.uk/resources/javascript/html2.htm

global Rec601_aliceblue                 = $E4847C    # RGB = $F0F8FF
global Rec601_antiquewhite              = $DC7588    # RGB = $FAEBD7
global Rec601_aqua                      = $AAA610    # RGB = $00FFFF
global Rec601_aquamarine                = $C6804B    # RGB = $7FFFD4
global Rec601_azure                     = $E78279    # RGB = $F0FFFF
global Rec601_beige                     = $E07582    # RGB = $F5F5DC
global Rec601_bisque                    = $D86E8E    # RGB = $FFE4C4
global Rec601_black                     = $108080    # RGB = $000000
global Rec601_blanchedalmond            = $DC708B    # RGB = $FFEBCD
global Rec601_blue                      = $29F06E    # RGB = $0000FF
global Rec601_blueviolet                = $5FC29D    # RGB = $8A2BE2
global Rec601_brown                     = $546EB6    # RGB = $A52A2A
global Rec601_burlywood                 = $B36594    # RGB = $DEB887
global Rec601_cadetblue                 = $888A64    # RGB = $5F9EA0
global Rec601_chartreuse                = $B1235A    # RGB = $7FFF00
global Rec601_chocolate                 = $7E50B3    # RGB = $D2691E
global Rec601_coral                     = $9958BC    # RGB = $FF7F50
global Rec601_cornflowerblue            = $8CAE64    # RGB = $6495ED
global Rec601_cornsilk                  = $E47385    # RGB = $FFF8DC
global Rec601_crimson                   = $5874D5    # RGB = $DC143C
global Rec601_cyan                      = $AAA610    # RGB = $00FFFF
global Rec601_darkblue                  = $1EBD76    # RGB = $00008B
global Rec601_darkcyan                  = $649543    # RGB = $008B8B
global Rec601_darkgoldenrod             = $84439F    # RGB = $B8860B
global Rec601_darkgray                  = $A18080    # RGB = $A9A9A9
global Rec601_darkgreen                 = $42635B    # RGB = $006400
global Rec601_darkkhaki                 = $A75E88    # RGB = $BDB76B
global Rec601_darkmagenta               = $41A8B3    # RGB = $8B008B
global Rec601_darkoliveGreen            = $60697B    # RGB = $556B2F
global Rec601_darkorange                = $9831BD    # RGB = $FF8C00
global Rec601_darkorchid                = $64B4A2    # RGB = $9932CC
global Rec601_darkred                   = $346BBD    # RGB = $8B0000
global Rec601_darksalmon                = $A367A6    # RGB = $E9967A
global Rec601_darkseaGreen              = $A1736F    # RGB = $8FBC8F
global Rec601_darkslateBlue             = $4FA17F    # RGB = $483D8B
global Rec601_darkslateGray             = $4C8572    # RGB = $2F4F4F
global Rec601_darkturquoise             = $8CA025    # RGB = $00CED1
global Rec601_darkviolet                = $4BC7B2    # RGB = $9400D3
global Rec601_deeppink                  = $6A95DE    # RGB = $FF1493
global Rec601_deepskyblue               = $89B828    # RGB = $00BFFF
global Rec601_dimgray                   = $6A8080    # RGB = $696969
global Rec601_dodgerblue                = $79C246    # RGB = $1E90FF
global Rec601_firebrick                 = $526BBF    # RGB = $B22222
global Rec601_floralwhite               = $E77B83    # RGB = $FFFAF0
global Rec601_forestgreen               = $626159    # RGB = $228B22
global Rec601_fuchsia                   = $6ACADE    # RGB = $FF00FF
global Rec601_gainsboro                 = $CD8080    # RGB = $DCDCDC
global Rec601_ghostwhite                = $E68380    # RGB = $F8F8FF
global Rec601_gold                      = $BE1CA1    # RGB = $FFD700
global Rec601_goldenrod                 = $9E3EA1    # RGB = $DAA520
global Rec601_gray                      = $7E8080    # RGB = $808080
global Rec601_green                     = $515B51    # RGB = $008000
global Rec601_greenyellow               = $C2316B    # RGB = $ADFF2F
global Rec601_honeydew                  = $E67C7A    # RGB = $F0FFF0
global Rec601_hotpink                   = $988BBD    # RGB = $FF69B4
global Rec601_indianred                 = $7C6FB2    # RGB = $CD5C5C
global Rec601_indigo                    = $30AE98    # RGB = $4B0082
global Rec601_ivory                     = $EA7981    # RGB = $FFFFF0
global Rec601_khaki                     = $CF578B    # RGB = $F0E68C
global Rec601_lavender                  = $D7897F    # RGB = $E6E6FA
global Rec601_lavenderblush             = $E28086    # RGB = $FFF0F5
global Rec601_lawngreen                 = $AF245A    # RGB = $7CFC00
global Rec601_lemonchiffon              = $E46C85    # RGB = $FFFACD
global Rec601_lightblue                 = $C08D6C    # RGB = $ADD8E6
global Rec601_lightcoral                = $9B6FB1    # RGB = $F08080
global Rec601_lightcyan                 = $E38572    # RGB = $E0FFFF
global Rec601_lightgoldenrodyellow      = $E36E83    # RGB = $FAFAD2
global Rec601_lightgreen                = $BB655D    # RGB = $90EE90
global Rec601_lightgrey                 = $C58080    # RGB = $D3D3D3
global Rec601_lightpink                 = $C07A9F    # RGB = $FFB6C1
global Rec601_lightsalmon               = $AE61AC    # RGB = $FFA07A
global Rec601_lightseagreen             = $839240    # RGB = $20B2AA
global Rec601_lightskyblue              = $B39E5E    # RGB = $87CEFA
global Rec601_lightslategray            = $828A77    # RGB = $778899
global Rec601_lightsteelblue            = $B68E75    # RGB = $B0C4DE
global Rec601_lightyellow               = $E87282    # RGB = $FFFFE0
global Rec601_lime                      = $913622    # RGB = $00FF00
global Rec601_limegreen                 = $895347    # RGB = $32CD32
global Rec601_linen                     = $E07A85    # RGB = $FAF0E6
global Rec601_magenta                   = $6ACADE    # RGB = $FF00FF
global Rec601_maroon                    = $316DB8    # RGB = $800000
global Rec601_mediumaquamarine          = $A28055    # RGB = $66CDAA
global Rec601_mediumblue                = $24DA71    # RGB = $0000CD
global Rec601_mediumorchid              = $7FA8A3    # RGB = $BA55D3
global Rec601_mediumpurple              = $84AA88    # RGB = $9370DB
global Rec601_mediumseagreen            = $857550    # RGB = $3CB371
global Rec601_mediumslatenlue           = $7BB87F    # RGB = $7B68EE
global Rec601_mediumspringgreen         = $9D7B19    # RGB = $00FA9A
global Rec601_mediumturquoise           = $A09244    # RGB = $48D1CC
global Rec601_mediumvioletred           = $5B97C6    # RGB = $C71585
global Rec601_midnightblue              = $2EA67A    # RGB = $191970
global Rec601_mintcream                 = $E87F7C    # RGB = $F5FFFA
global Rec601_mistyrose                 = $DA7B8C    # RGB = $FFE4E1
global Rec601_moccasin                  = $D6678F    # RGB = $FFE4B5
global Rec601_navajowhite               = $D26692    # RGB = $FFDEAD
global Rec601_navy                      = $1DB877    # RGB = $000080
global Rec601_oldlace                   = $E37885    # RGB = $FDF5E6
global Rec601_olive                     = $714889    # RGB = $808000
global Rec601_olivedrab                 = $765678    # RGB = $6B8E23
global Rec601_orange                    = $A52AB3    # RGB = $FFA500
global Rec601_orangered                 = $7446D7    # RGB = $FF4500
global Rec601_orchid                    = $959DA7    # RGB = $DA70D6
global Rec601_palegoldenrod             = $D36487    # RGB = $EEE8AA
global Rec601_palegreen                 = $C4635C    # RGB = $98FB98
global Rec601_paleturquoise             = $CC8964    # RGB = $AFEEEE
global Rec601_palevioletred             = $8F80AC    # RGB = $DB7093
global Rec601_papayawhip                = $DF7289    # RGB = $FFEFD5
global Rec601_peachpuff                 = $D16C93    # RGB = $FFDAB9
global Rec601_peru                      = $8E57A5    # RGB = $CD853F
global Rec601_pink                      = $C67C9B    # RGB = $FFC0CB
global Rec601_plum                      = $AF9296    # RGB = $DDA0DD
global Rec601_powderblue                = $C58A6A    # RGB = $B0E0E6
global Rec601_purple                    = $3DA5AF    # RGB = $800080
global Rec601_red                       = $515AF0    # RGB = $FF0000
global Rec601_rosybrown                 = $967994    # RGB = $BC8F8F
global Rec601_royalblue                 = $6CBB66    # RGB = $4169E1
global Rec601_saddlebrown               = $5860A2    # RGB = $8B4513
global Rec601_salmon                    = $9C68B7    # RGB = $FA8072
global Rec601_sandybrown                = $AB56A8    # RGB = $F4A460
global Rec601_seagreen                  = $6A775B    # RGB = $2E8B57
global Rec601_seashell                  = $E47B85    # RGB = $FFF5EE
global Rec601_sienna                    = $6764A5    # RGB = $A0522D
global Rec601_silver                    = $B58080    # RGB = $C0C0C0
global Rec601_skyblue                   = $B2975F    # RGB = $87CEEB
global Rec601_slateblue                 = $6DB07F    # RGB = $6A5ACD
global Rec601_slategray                 = $7B8978    # RGB = $708090
global Rec601_snow                      = $E87F82    # RGB = $FFFAFA
global Rec601_springgreen               = $9D6E19    # RGB = $00FF7F
global Rec601_steelblue                 = $759F62    # RGB = $4682B4
global Rec601_tan                       = $AE6A90    # RGB = $D2B48C
global Rec601_teal                      = $5D9348    # RGB = $008080
global Rec601_thistle                   = $BD8789    # RGB = $D8BFD8
global Rec601_tomato                    = $8A5DC7    # RGB = $FF6347
global Rec601_turquoise                 = $A6913B    # RGB = $40E0D0
global Rec601_violet                    = $A69FA8    # RGB = $EE82EE
global Rec601_wheat                     = $D06A8D    # RGB = $F5DEB3
global Rec601_white                     = $EB8080    # RGB = $FFFFFF
global Rec601_whitesmoke                = $E28080    # RGB = $F5F5F5
global Rec601_yellow                    = $D21092    # RGB = $FFFF00
global Rec601_yellowgreen               = $A44375    # RGB = $9ACD32

#Gray colors
global Rec601_gray10                    = $258080    # RGB = $191919
global Rec601_gray20                    = $3B8080    # RGB = $323232
global Rec601_gray30                    = $508080    # RGB = $4B4B4B
global Rec601_gray40                    = $678080    # RGB = $656565
global Rec601_gray50                    = $7D8080    # RGB = $7F7F7F
global Rec601_gray60                    = $938080    # RGB = $989898
global Rec601_gray70                    = $A88080    # RGB = $B1B1B1
global Rec601_gray80                    = $BD8080    # RGB = $CACACA
global Rec601_gray90                    = $D48080    # RGB = $E4E4E4
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 25th February 2015 at 00:19.
StainlessS is offline   Reply With Quote
Old 24th February 2015, 17:47   #6  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Or rec709: colors_yuv_Rec709.avsi
Code:
# list of common colors (yuv values [Matrix='Rec709'])

# source:
# http://en.wikipedia.org/wiki/List_of_colors
# http://en.wikipedia.org/wiki/X11_color_names
# http://www.cryer.co.uk/resources/javascript/html2.htm

global Rec709_aliceblue                 = $E4847C    # RGB = $F0F8FF
global Rec709_antiquewhite              = $DB7687    # RGB = $FAEBD7
global Rec709_aqua                      = $BC9A10    # RGB = $00FFFF
global Rec709_aquamarine                = $D17A4A    # RGB = $7FFFD4
global Rec709_azure                     = $E88279    # RGB = $F0FFFF
global Rec709_beige                     = $E17581    # RGB = $F5F5DC
global Rec709_bisque                    = $D76F8D    # RGB = $FFE4C4
global Rec709_black                     = $108080    # RGB = $000000
global Rec709_blanchedalmond            = $DC718A    # RGB = $FFEBCD
global Rec709_blue                      = $20F076    # RGB = $0000FF
global Rec709_blueviolet                = $52C7A2    # RGB = $8A2BE2
global Rec709_brown                     = $4B74B6    # RGB = $A52A2A
global Rec709_burlywood                 = $B26793    # RGB = $DEB887
global Rec709_cadetblue                 = $8C8764    # RGB = $5F9EA0
global Rec709_chartreuse                = $C41D52    # RGB = $7FFF00
global Rec709_chocolate                 = $7955B1    # RGB = $D2691E
global Rec709_coral                     = $925EBA    # RGB = $FF7F50
global Rec709_cornflowerblue            = $8CAC67    # RGB = $6495ED
global Rec709_cornsilk                  = $E57384    # RGB = $FFF8DC
global Rec709_crimson                   = $487DD6    # RGB = $DC143C
global Rec709_cyan                      = $BC9A10    # RGB = $00FFFF
global Rec709_darkblue                  = $19BD7A    # RGB = $00008B
global Rec709_darkcyan                  = $6E8E43    # RGB = $008B8B
global Rec709_darkgoldenrod             = $85459B    # RGB = $B8860B
global Rec709_darkgray                  = $A18080    # RGB = $A9A9A9
global Rec709_darkgreen                 = $4D5E58    # RGB = $006400
global Rec709_darkkhaki                 = $AA5E86    # RGB = $BDB76B
global Rec709_darkmagenta               = $32AFB7    # RGB = $8B008B
global Rec709_darkoliveGreen            = $646879    # RGB = $556B2F
global Rec709_darkorange                = $9537B8    # RGB = $FF8C00
global Rec709_darkorchid                = $57B9A7    # RGB = $9932CC
global Rec709_darkred                   = $2972BD    # RGB = $8B0000
global Rec709_darksalmon                = $9E6BA6    # RGB = $E9967A
global Rec709_darkseaGreen              = $A6716E    # RGB = $8FBC8F
global Rec709_darkslateBlue             = $4BA182    # RGB = $483D8B
global Rec709_darkslateGray             = $4E8372    # RGB = $2F4F4F
global Rec709_darkturquoise             = $9B9625    # RGB = $00CED1
global Rec709_darkviolet                = $38CEB9    # RGB = $9400D3
global Rec709_deeppink                  = $54A0E2    # RGB = $FF1493
global Rec709_deepskyblue               = $95AF2A    # RGB = $00BFFF
global Rec709_dimgray                   = $6A8080    # RGB = $696969
global Rec709_dodgerblue                = $7EBC49    # RGB = $1E90FF
global Rec709_firebrick                 = $4772BF    # RGB = $B22222
global Rec709_floralwhite               = $E77B83    # RGB = $FFFAF0
global Rec709_forestgreen               = $6E5C56    # RGB = $228B22
global Rec709_fuchsia                   = $4ED6E6    # RGB = $FF00FF
global Rec709_gainsboro                 = $CD8080    # RGB = $DCDCDC
global Rec709_ghostwhite                = $E58380    # RGB = $F8F8FF
global Rec709_gold                      = $C31E9A    # RGB = $FFD700
global Rec709_goldenrod                 = $9F409D    # RGB = $DAA520
global Rec709_gray                      = $7E8080    # RGB = $808080
global Rec709_green                     = $5F554D    # RGB = $008000
global Rec709_greenyellow               = $CF2D64    # RGB = $ADFF2F
global Rec709_honeydew                  = $E77B7A    # RGB = $F0FFF0
global Rec709_hotpink                   = $8A92BF    # RGB = $FF69B4
global Rec709_indianred                 = $7475B2    # RGB = $CD5C5C
global Rec709_indigo                    = $26B29C    # RGB = $4B0082
global Rec709_ivory                     = $EA7981    # RGB = $FFFFF0
global Rec709_khaki                     = $D25788    # RGB = $F0E68C
global Rec709_lavender                  = $D7897F    # RGB = $E6E6FA
global Rec709_lavenderblush             = $E18186    # RGB = $FFF0F5
global Rec709_lawngreen                 = $C11E52    # RGB = $7CFC00
global Rec709_lemonchiffon              = $E56C84    # RGB = $FFFACD
global Rec709_lightblue                 = $C38A6D    # RGB = $ADD8E6
global Rec709_lightcoral                = $9275B1    # RGB = $F08080
global Rec709_lightcyan                 = $E58372    # RGB = $E0FFFF
global Rec709_lightgoldenrodyellow      = $E46E82    # RGB = $FAFAD2
global Rec709_lightgreen                = $C5605B    # RGB = $90EE90
global Rec709_lightgrey                 = $C58080    # RGB = $D3D3D3
global Rec709_lightpink                 = $BA7DA0    # RGB = $FFB6C1
global Rec709_lightsalmon               = $A866AB    # RGB = $FFA07A
global Rec709_lightseagreen             = $8E8B40    # RGB = $20B2AA
global Rec709_lightskyblue              = $B79A5F    # RGB = $87CEFA
global Rec709_lightslategray            = $838978    # RGB = $778899
global Rec709_lightsteelblue            = $B68D76    # RGB = $B0C4DE
global Rec709_lightyellow               = $E97281    # RGB = $FFFFE0
global Rec709_lime                      = $AD2A1A    # RGB = $00FF00
global Rec709_limegreen                 = $9A4C42    # RGB = $32CD32
global Rec709_linen                     = $DF7B85    # RGB = $FAF0E6
global Rec709_magenta                   = $4ED6E6    # RGB = $FF00FF
global Rec709_maroon                    = $2773B8    # RGB = $800000
global Rec709_mediumaquamarine          = $AB7B54    # RGB = $66CDAA
global Rec709_mediumblue                = $1DDA78    # RGB = $0000CD
global Rec709_mediumorchid              = $73ADA7    # RGB = $BA55D3
global Rec709_mediumpurple              = $7DAB8B    # RGB = $9370DB
global Rec709_mediumseagreen            = $906F4E    # RGB = $3CB371
global Rec709_mediumslatenlue           = $75B983    # RGB = $7B68EE
global Rec709_mediumspringgreen         = $B36F16    # RGB = $00FA9A
global Rec709_mediumturquoise           = $AA8C44    # RGB = $48D1CC
global Rec709_mediumvioletred           = $499FCA    # RGB = $C71585
global Rec709_midnightblue              = $2BA67C    # RGB = $191970
global Rec709_mintcream                 = $E97F7C    # RGB = $F5FFFA
global Rec709_mistyrose                 = $D97C8C    # RGB = $FFE4E1
global Rec709_moccasin                  = $D6698E    # RGB = $FFE4B5
global Rec709_navajowhite               = $D26790    # RGB = $FFDEAD
global Rec709_navy                      = $18B87B    # RGB = $000080
global Rec709_oldlace                   = $E37984    # RGB = $FDF5E6
global Rec709_olive                     = $764885    # RGB = $808000
global Rec709_olivedrab                 = $7D5575    # RGB = $6B8E23
global Rec709_orange                    = $A42EAE    # RGB = $FFA500
global Rec709_orangered                 = $694FD4    # RGB = $FF4500
global Rec709_orchid                    = $8AA2AA    # RGB = $DA70D6
global Rec709_palegoldenrod             = $D46485    # RGB = $EEE8AA
global Rec709_palegreen                 = $CF5E59    # RGB = $98FB98
global Rec709_paleturquoise             = $D18664    # RGB = $AFEEEE
global Rec709_palevioletred             = $8685AE    # RGB = $DB7093
global Rec709_papayawhip                = $DF7388    # RGB = $FFEFD5
global Rec709_peachpuff                 = $D06E92    # RGB = $FFDAB9
global Rec709_peru                      = $8B5AA2    # RGB = $CD853F
global Rec709_pink                      = $C17F9B    # RGB = $FFC0CB
global Rec709_plum                      = $A89598    # RGB = $DDA0DD
global Rec709_powderblue                = $C8876B    # RGB = $B0E0E6
global Rec709_purple                    = $2FABB3    # RGB = $800080
global Rec709_red                       = $3F66F0    # RGB = $FF0000
global Rec709_rosybrown                 = $937B94    # RGB = $BC8F8F
global Rec709_royalblue                 = $6AB96A    # RGB = $4169E1
global Rec709_saddlebrown               = $5563A1    # RGB = $8B4513
global Rec709_salmon                    = $936EB6    # RGB = $FA8072
global Rec709_sandybrown                = $A75AA6    # RGB = $F4A460
global Rec709_seagreen                  = $737359    # RGB = $2E8B57
global Rec709_seashell                  = $E47C85    # RGB = $FFF5EE
global Rec709_sienna                    = $6268A4    # RGB = $A0522D
global Rec709_silver                    = $B58080    # RGB = $C0C0C0
global Rec709_skyblue                   = $B69460    # RGB = $87CEEB
global Rec709_slateblue                 = $67B182    # RGB = $6A5ACD
global Rec709_slategray                 = $7C8978    # RGB = $708090
global Rec709_snow                      = $E88082    # RGB = $FFFAFA
global Rec709_springgreen               = $B56115    # RGB = $00FF7F
global Rec709_steelblue                 = $789C64    # RGB = $4682B4
global Rec709_tan                       = $AE6B8F    # RGB = $D2B48C
global Rec709_teal                      = $678D48    # RGB = $008080
global Rec709_thistle                   = $BA888A    # RGB = $D8BFD8
global Rec709_tomato                    = $8064C6    # RGB = $FF6347
global Rec709_turquoise                 = $B2893A    # RGB = $40E0D0
global Rec709_violet                    = $9AA5AB    # RGB = $EE82EE
global Rec709_wheat                     = $D06B8C    # RGB = $F5DEB3
global Rec709_white                     = $EB8080    # RGB = $FFFFFF
global Rec709_whitesmoke                = $E28080    # RGB = $F5F5F5
global Rec709_yellow                    = $DB108A    # RGB = $FFFF00
global Rec709_yellowgreen               = $AD4170    # RGB = $9ACD32

#Gray colors
global Rec709_gray10                    = $258080    # RGB = $191919
global Rec709_gray20                    = $3B8080    # RGB = $323232
global Rec709_gray30                    = $508080    # RGB = $4B4B4B
global Rec709_gray40                    = $678080    # RGB = $656565
global Rec709_gray50                    = $7D8080    # RGB = $7F7F7F
global Rec709_gray60                    = $938080    # RGB = $989898
global Rec709_gray70                    = $A88080    # RGB = $B1B1B1
global Rec709_gray80                    = $BD8080    # RGB = $CACACA
global Rec709_gray90                    = $D48080    # RGB = $E4E4E4
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 24th February 2015 at 23:58.
StainlessS is offline   Reply With Quote
Old 24th February 2015, 21:09   #7  |  Link
Reel.Deel
Registered User
 
Join Date: Mar 2012
Location: Texas
Posts: 1,664
Thank you very much StainlessS! I admire how you always go the extra mile to help out! Just tried it out and it worked as expected. Thanks again.
Reel.Deel is offline   Reply With Quote
Old 24th February 2015, 22:06   #8  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Quote:
you always go the extra mile
Be quiet, I'm not done yet.

Code:
#ColorPickerClip.avs

ColorsRGB = "colors_rgb.avsi"
DB        = "Colors.DB"

MakeDB(DB,ColorsRGB)
MakeClip(DB).AssumeFPS(1.0)
Frames = (Height/48-10)+1
Loop(Frames,0,0)
Animate(0,Frames-1,"Spline36Resize",640,480,0,0,-0,480,640,480,0,Height-480,-0,480)
#ConvertToYV12()    # To make the mp4
RT_FileDelete(DB)     # EDIT: Added
Return last

Function RGB_2_YUV(Int RGB_Color,String Matrix) {
    RGB_Color=RT_BitAnd(RGB_Color,$FFFFFF)
    BlankClip(Width=16,Height=16,Length=1,Color=RGB_Color)
    c=ConvertToYV12(matrix=matrix)
    current_frame=0
    Y=c.YPlaneMin() U=c.UPlaneMin() V=c.VPlaneMin()
    Col = (((Y*256)+U)*256)+V
    return Col
}

Function MakeDB(String DB,String ColorsRGB) {
    myName="MakeDB: "
    Assert(Exist(ColorsRGB),RT_String("%s %s Does not exist",myName,ColorsRGB))
    Assert(DB!="",RT_String("%s DBase Name Cannot be null",myName))    
    Exist(DB) ? RT_FileDelete(DB) : NOP
    GScript("""
        RT_DBaseAlloc(DB,0,"iiis64")
        TEXT=RT_ReadTxtFromFile(ColorsRGB)
        LINES=RT_TxtQueryLines(TEXT)
        for(i=0,LINES-1) {
            S=RT_TxtGetLine(TEXT,i)
            S=(S!="")?RT_StrReplaceDeep(RT_StrReplace(S,Chr(9)," "),"  "," "):S
            While(RT_Ord(S)==32) {S=MidStr(S,2)}
            if(RT_Ord(S)!=RT_Ord("#") && RT_Ord(S)!=0) {
                nm    = RT_FindStr(S,"color_")
                Assert(nm!=0,"Cannot find color name")
                S  = MidStr(S,nm)            
                nmend = RT_FindStr(S," ")
                Assert(nm!=0,"Cannot find color name end")
                Name  = LeftStr(S,nmend)
                S     = MidStr(S,nmend)            
                Hx    = RT_FindStr(S,"= $")
                Assert(Hx!=0,"Cannot find Dollar")            
                RGB=RT_HexValue(S,pos=Hx+3)
                YUV601=RGB_2_YUV(RGB,"Rec601")
                YUV709=RGB_2_YUV(RGB,"Rec709")
                RT_DBaseAppend(DB,RGB,YUV601,YUV709,Name)        
            }
        }    
    """)
    Return 0
}

Function MakeClip(String DB) {
    H = 48 
    records = RT_DBaseRecords(DB)
    nmtmpt = BlankClip(length=1,width=316,height=H,pixel_type="RGB32").KillAudio 
    hxtmpt = BlankClip(length=1,width=108,height=H,pixel_type="RGB32").KillAudio 
    NC     = nmtmpt.BlankClip(color=$FFFFFF).Subtitle("Color Name",Align=5).LetterBox(2,2,2,2)
    RGBC   = hxtmpt.BlankClip(color=$FFFFFF).Subtitle("RGB",Align=5).LetterBox(2,2,2,2)
    Y601C  = hxtmpt.BlankClip(color=$FFFFFF).Subtitle("YUV rec601",Align=5).LetterBox(2,2,2,2)
    Y709C  = hxtmpt.BlankClip(color=$FFFFFF).Subtitle("YUV rec709",Align=5).LetterBox(2,2,2,2)
    C      = StackHorizontal(NC,RGBC,Y601C,Y709C) 
    GScript("""
        for(i=0,records-1) {
            RGB   = RT_DBaseGetField(DB,i,0)
            YUV601= RT_DBaseGetField(DB,i,1)
            YUV709= RT_DBaseGetField(DB,i,2)
            Name  = RT_DBaseGetField(DB,i,3)
            NC    = nmtmpt.BlankClip(color=RGB).Subtitle(Name,Align=5).LetterBox(2,2,2,2)
            RGBC  = hxtmpt.BlankClip(color=$FFFFFF).Subtitle(RT_String("$%0.6X",RGB),Align=5).LetterBox(2,2,2,2)
            Y601C  = hxtmpt.BlankClip(color=$FFFFFF).Subtitle(RT_String("$%0.6X",YUV601),Align=5).LetterBox(2,2,2,2)
            Y709C  = hxtmpt.BlankClip(color=$FFFFFF).Subtitle(RT_String("$%0.6X",YUV709),Align=5).LetterBox(2,2,2,2)
            TMPC = StackHorizontal(NC,RGBC,Y601C,Y709C)
            C=StackVertical(C,TMPC)                          
        }
    """)        
    Return C
}
Frame 0 of 142 frames (2:22 @ 1.0FPS)


And here Mp4 version (Rec601, 2MB): LINK REMOVED, See Post #21
Jumps upwards one color at each frame (each second).

EDIT: VLC dont like the MP4, maybe because only 1.0 FPS (and/or 117kb/s).

EDIT:
Quote:
Originally Posted by Reel.Deel View Post
Edit: Blankclip has the color_yuv parameter but what is it based on? 601 or 709?
I would say that it is not based on anything, its just YUV as RGB is just RGB.
Only during conversion does rec601 or rec709 have any meaning.
EDIT: Had to check, "Color_yuv only valid for YUV color spaces", error if using color_yuv with rgb result in BlankClip.

EDIT: The diligent amongst you might notice two copies of "color_palegoldenrod" in the mp4,
this is a duplicate in colors_rgb.avsi as installed by v2.6RC1, you might like to delete duplicate from your copy,
reported in RC1 devs thread.

EDIT: Changed posts #5 and #7, changed names from eg "global color_skyblue" to global Rec601_skyblue" and "global Rec709_skyblue"
so can use the different colors avsi scripts together without conflict.

EDIT: You can call avsi creation script using "PC601" and "PC709" as Matrix string instead of documented "PC.601" and "PC.709",
the dot would break the global names (dot not valid in a variable name) in result avsi scripts. (valid for both post #4 and #5)
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 25th October 2018 at 14:51.
StainlessS is offline   Reply With Quote
Old 22nd September 2015, 14:11   #9  |  Link
Reel.Deel
Registered User
 
Join Date: Mar 2012
Location: Texas
Posts: 1,664
I'm wondering how can I use RGB_2_YUV(post #4) to feed the color_yuv argument of Blankclip? Using Hex(RGB_2_YUV($191970, "Rec601")) returns "2ea67a" but it's missing $ and it's also a string.
Reel.Deel is offline   Reply With Quote
Old 22nd September 2015, 14:45   #10  |  Link
vivan
/人 ◕ ‿‿ ◕ 人\
 
Join Date: May 2011
Location: Russia
Posts: 643
But you just don't need Hex.
Code:
BlankClip(pixel_type="YV12", color_yuv=RGB_2_YUV($191970, "Rec601"))
or why even use all of this when you can simply
Code:
BlankClip(pixel_type="YV12", color=$191970)
vivan is offline   Reply With Quote
Old 22nd September 2015, 14:55   #11  |  Link
Reel.Deel
Registered User
 
Join Date: Mar 2012
Location: Texas
Posts: 1,664
Quote:
Originally Posted by vivan View Post
But you just don't need Hex.
Code:
BlankClip(pixel_type="YV12", color_yuv=RGB_2_YUV($191970, "Rec601"))
or why even use all of this when you can simply
Code:
BlankClip(pixel_type="YV12", color=$191970)
Oops, I forgot about that. Thanks for the reminder. The reason I cannot use color=$191970 directly is because I'll get color differences depending on the matrix used. That's why I'm using RGB_2_YUV.
Reel.Deel is offline   Reply With Quote
Old 22nd September 2015, 15:01   #12  |  Link
vivan
/人 ◕ ‿‿ ◕ 人\
 
Join Date: May 2011
Location: Russia
Posts: 643
Quote:
Originally Posted by Reel.Deel View Post
The reason I cannot use color=$191970 directly is because I'll get color differences depending on the matrix used. That's why I'm using RGB_2_YUV.
Well, if you need other than Rec601, then you can use
Code:
BlankClip(color=$191970).ConvertToYV12(matrix)
(which is exactly what StainlessS does to calculate value in his function)
vivan is offline   Reply With Quote
Old 22nd September 2015, 20:10   #13  |  Link
jmac698
Registered User
 
Join Date: Jan 2006
Posts: 1,867
Yes the hex value you want to use depends on the matrix, a rule of thumb is to use rec709. The differences aren't large (compared to rec601) but noticeable in green objects.
jmac698 is offline   Reply With Quote
Old 23rd September 2015, 01:59   #14  |  Link
Reel.Deel
Registered User
 
Join Date: Mar 2012
Location: Texas
Posts: 1,664
Quote:
Originally Posted by vivan View Post
Well, if you need other than Rec601, then you can use
Code:
BlankClip(color=$191970).ConvertToYV12(matrix)
(which is exactly what StainlessS does to calculate value in his function)
That works but it's indeed much slower:

~355fps
Code:
BlankClip(length=100000, width=1080, height=720, pixel_type="RGB24", color=$191970).ConvertToYV12(matrix="rec709")
~6878620fps
Code:
BlankClip(length=100000, width=1080, height=720, pixel_type="YV12", color_yuv=RGB_2_YUV($191970, "rec709"))
Reel.Deel is offline   Reply With Quote
Old 23rd September 2015, 08:46   #15  |  Link
Gavino
Avisynth language lover
 
Join Date: Dec 2007
Location: Spain
Posts: 3,431
This should be much faster than 355fps:
Code:
BlankClip(length=1, width=1080, height=720, pixel_type="RGB24", color=$191970).ConvertToYV12(matrix="rec709")
Loop(100000)
__________________
GScript and GRunT - complex Avisynth scripting made easier
Gavino is offline   Reply With Quote
Old 23rd September 2015, 14:30   #16  |  Link
Reel.Deel
Registered User
 
Join Date: Mar 2012
Location: Texas
Posts: 1,664
Yup, runs about 2847930fps. I somehow manage to sometimes overlook the obvious things in AviSynth :/.
Reel.Deel is offline   Reply With Quote
Old 24th September 2015, 10:56   #17  |  Link
fvisagie
Registered User
 
Join Date: Aug 2008
Location: Isle of Man
Posts: 588
If you'd like to calculate the RGB <-> YUV conversions directly, these may be of some use.
Code:
#-------------------------------------------
# YUVToRGB 1.1.0
#   Converts YUV format colour value to equivalent RGB format
#
#   Useful when
#
#       Working in YUV colourspace but filter requires values to be specified in RGB format
#       Working in RGB colourspace but filter results or measurements are presented in YUV format
#
#   YUVToRGB(int YUV, string "matrix", string "range")
#
#       <YUV>       YUV format colour value in either decimal or hexadecimal notation
#       <matrix>    Colour coefficient matrix to use in conversion - "Rec601" / "Rec709" / "FCC", default "Rec601"
#       <range>     YUV range: "limited" ([16,235]) or "full" ([0,255]), default "full"
#
#   Requirements
#
#       YUV value must fall within gamut of valid RGB values, otherwise unexpected or unusable output may result
#
#   References
#
#       http://avisynth.nl/index.php/Color_conversions
#
#   Version history
#
#       1.1.0 Francois Visagie
#           Added <range> parameter
#           Replaced calculations with Avisynth "programming values" from above reference
#           Updated References URL
#
#       1.0.0 Francois Visagie
#

function YUVToRGB(int YUV, string "matrix", string "range") {
range       = Default(range, "full")
y           = Int(YUV/65536.0)
u           = Int((YUV - y*65536)/256.0)
v           = YUV - y*65536 - u*256
Eval(ColourCoefficients(matrix))
range == "full"    ? Eval("""
                        r           = y + 2.0*(v-128.0)*(1-Kr)
                        g           = y - 2.0*(u-128.0)*(1-Kb)*Kb/Kg - 2.0*(v-128.0)*(1-Kr)*Kr/Kg
                        b           = y + 2.0*(u-128.0)*(1-Kb)
                      """) : \
range == "limited" ? Eval("""
                        r           = (255.0/219.0)*y + (255.0/112.0)*v*(1-Kr) - (255.0*16.0/219.0 + 255.0*128.0/112.0*(1-Kr))
                        g           = (255.0/219.0)*y - (255.0/112.0)*u*(1-Kb)*Kb/Kg - (255.0/112.0)*v*(1-Kr)*Kr/Kg \
                                        - (255.0*16.0/219.0 - 255.0/112.0*128.0*(1-Kb)*Kb/Kg - 255.0/112.0*128.0*(1-Kr)*Kr/Kg)
                        b           = (255.0/219.0)*y + (255.0/112.0)*u*(1-Kb) - (255.0*16.0/219.0 + 255.0*128.0/112.0*(1-Kb))
                      """) : \
    Assert(false, """YUVToRGB: Invalid 'range' value """"+range+""""""")
r           = Min(255, Max(Round(r), 0))
g           = Min(255, Max(Round(g), 0))
b           = Min(255, Max(Round(b), 0))
return(r*65536 + g*256 + b)
}


#-------------------------------------------
# RGBToYUV 1.1.0
#   Converts RGB format colour value to equivalent YUV format
#
#   Useful when
#
#       Working in RGB colourspace but filter requires values to be specified in YUV format
#       Working in YUV colourspace but filter results or measurements are presented in RGB format
#
#   RGBToYUV(int RGB, string "matrix", string "range")
#
#       <RGB>       RGB format colour value in either decimal or hexadecimal notation
#       <matrix>    Colour coefficient matrix to use in conversion - "Rec601" / "Rec709" / "FCC", default "Rec601"
#       <range>     YUV range: "limited" ([16,235]) or "full" ([0,255]), default "full"
#
#   References
#
#       http://avisynth.nl/index.php/Color_conversions
#
#   Version history
#
#       1.1.0 Francois Visagie
#           Added <range> parameter
#           Replaced calculations with Avisynth "programming values" from above reference
#           Updated References URL
#
#       1.0.0 Francois Visagie
#

function RGBToYUV(int RGB, string "matrix", string "range") {
range       = Default(range, "full")
r           = Int(RGB/65536.0)
g           = Int((RGB - r*65536)/256.0)
b           = RGB - r*65536 - g*256
Eval(ColourCoefficients(matrix))
range == "full"    ? Eval("""
                        y           = Kr*r + Kg*g + Kb*b 
                        v           = 0.5*r - 0.5*g*Kg/(1-Kr) - 0.5*b*Kb/(1-Kr) + 128.0
                        u           = - 0.5*r*Kr/(1-Kb) - 0.5*g*Kg/(1-Kb) + 0.5*b + 128.0
                      """) : \
range == "limited" ? Eval("""
                        y           = (Kr*219.0/255.0)*r + (Kg*219.0/255.0)*g + (Kb*219.0/255.0)*b + 16.0
                        v           = 112.0/255.0*r - Kg*112.0/255.0*g/(1-Kr) - Kb*112.0/255.0*b/(1-Kr) + 128.0
                        u           = - Kr*112.0/255.0*r/(1-Kb) - Kg*112.0/255.0*g/(1-Kb) + 112.0/255.0*b + 128.0
                      """) : \
    Assert(false, """RGBToYUV: Invalid 'range' value """"+range+""""""")
y           = Min(255, Max(Round(y), 0))
u           = Min(255, Max(Round(u), 0))
v           = Min(255, Max(Round(v), 0))
return(y*65536 + u*256 + v)
}


#-------------------------------------------
# ColourCoefficients 1.0.0
#   Generates specified colour matrix coefficient values
#
#   Useful when
#
#       Doing YUV<->RGB colourspace calculations or conversions
#       Doing colour coefficient calculations or conversions
#
#   ColourCoefficients(string "matrix")
#
#       <matrix>    Colour coefficient matrix which to generate coefficients for - "Rec601" / "Rec709" / "FCC", default "Rec601"
#
#   Usage
#
#       coeffs = ColourCoefficients("Rec709")   # ColourCoefficients returns a multi-statement string with matrix coefficient value assignments
#       Eval(coeffs)                            # This defines Kr containing Red channel coefficient, Kg with Green channel coefficient and Kb for Blue channel
#       y      = Round(Kr*r + Kg*g + Kb*b)
#       ...
#
#   References
#
#       http://avisynth.org/mediawiki/Color1conversions
#
#   Version history
#
#       1.0.0 Francois Visagie
#

function ColourCoefficients(string "matrix") {
matrix      = Default(matrix, "Rec601")
matrixnum   = (matrix == "Rec601") ? 0 : \
              (matrix == "Rec709") ? 1 : \
              (matrix == "FCC"   ) ? 2 : 3
Assert(matrixnum < 3, """'matrix' value """" + matrix + """" is invalid""")
# Channel coefficients          Rec.601 Rec.709 FCC
Kr          = Select(matrixnum, 0.299,  0.2125, 0.3 )
Kg          = Select(matrixnum, 0.587,  0.7154, 0.59)
Kb          = Select(matrixnum, 0.114,  0.0721, 0.11)
return( \
"Kr=" + string(Kr) + "
Kg=" + string(Kg) + "
Kb=" + string(Kb))
}
fvisagie is offline   Reply With Quote
Old 5th October 2015, 22:04   #18  |  Link
Reel.Deel
Registered User
 
Join Date: Mar 2012
Location: Texas
Posts: 1,664
@ StainlessS

How can I add PC.709/601 to the script in post #8. I tried modifying the script but when I tried loading I get this error:
Quote:
RT_DBaseAppend: Error, DB(0) : Incorrect number of field variables(6) Expecting 4
Took a look at the RT_Stats docs but I'm not sure how to fix it.
Reel.Deel is offline   Reply With Quote
Old 5th October 2015, 23:03   #19  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Try this (not much testing, but think should be ok).
Have commented where made changes. You just needed to add two more 'i' fields to RT_DBaseAlloc() so s field moved to field 5.

Code:
#ColorPickerClip.avs

ColorsRGB = "colors_rgb.avsi"
DB        = "Colors.DB"

MakeDB(DB,ColorsRGB)
MakeClip(DB).AssumeFPS(1.0)
Frames = (Height/48-10)+1
Loop(Frames,0,0)
Animate(0,Frames-1,"Spline36Resize",640,480,0,0,-0,480,640,480,0,Height-480,-0,480)
#ConvertToYV12()      # To make the mp4
RT_FileDelete(DB)     # EDIT: Added
Return last

Function RGB_2_YUV(Int RGB_Color,String Matrix) {
    RGB_Color=RT_BitAnd(RGB_Color,$FFFFFF)
    BlankClip(Width=16,Height=16,Length=1,Color=RGB_Color)
    c=ConvertToYV12(matrix=matrix)
    current_frame=0
    Y=c.YPlaneMin() U=c.UPlaneMin() V=c.VPlaneMin()
    Col = ((Y*256+U)*256)+V
    return Col
}

Function MakeDB(String DB,String ColorsRGB) {
    myName="MakeDB: "
    Assert(Exist(ColorsRGB),RT_String("%s %s Does not exist",myName,ColorsRGB))
    Assert(DB!="",RT_String("%s DBase Name Cannot be null",myName))    
    Exist(DB) ? RT_FileDelete(DB) : NOP
    GScript("""
        RT_DBaseAlloc(DB,0,"iiiiis64")                           # Inserted two i fields BEFORE s field, so s field (Name) is now field 5
        TEXT=RT_ReadTxtFromFile(ColorsRGB)
        LINES=RT_TxtQueryLines(TEXT)
        for(i=0,LINES-1) {
            S=RT_TxtGetLine(TEXT,i)
            S=(S!="")?RT_StrReplaceDeep(RT_StrReplace(S,Chr(9)," "),"  "," "):S
            While(RT_Ord(S)==32) {S=MidStr(S,2)}
            if(RT_Ord(S)!=RT_Ord("#") && RT_Ord(S)!=0) {
                nm    = RT_FindStr(S,"color_")
                Assert(nm!=0,"Cannot find color name")
                S  = MidStr(S,nm)            
                nmend = RT_FindStr(S," ")
                Assert(nm!=0,"Cannot find color name end")
                Name  = LeftStr(S,nmend)
                S     = MidStr(S,nmend)            
                Hx    = RT_FindStr(S,"= $")
                Assert(Hx!=0,"Cannot find Dollar")            
                RGB=RT_HexValue(S,pos=Hx+3)
                YUV601=RGB_2_YUV(RGB,"Rec601")
                YUV709=RGB_2_YUV(RGB,"Rec709")
                YUVPC601=RGB_2_YUV(RGB,"Pc601")                                 # Added
                YUVPC709=RGB_2_YUV(RGB,"Pc709")                                 # Added
                RT_DBaseAppend(DB,RGB,YUV601,YUV709,YUVPC601,YUVPC709,Name)     # Inserted pc yuv before Name string field   
            }
        }    
    """)
    Return 0
}

Function MakeClip(String DB) {
    H = 48 
    records = RT_DBaseRecords(DB)
    nmtmpt  = BlankClip(length=1,width=316,height=H,pixel_type="RGB32").KillAudio 
    hxtmpt  = BlankClip(length=1,width=108,height=H,pixel_type="RGB32").KillAudio 
    NC      = nmtmpt.BlankClip(color=$FFFFFF).Subtitle("Color Name",Align=5).LetterBox(2,2,2,2)
    RGBC    = hxtmpt.BlankClip(color=$FFFFFF).Subtitle("RGB",Align=5).LetterBox(2,2,2,2)
    Y601C   = hxtmpt.BlankClip(color=$FFFFFF).Subtitle("YUV rec601",Align=5).LetterBox(2,2,2,2)
    Y709C   = hxtmpt.BlankClip(color=$FFFFFF).Subtitle("YUV rec709",Align=5).LetterBox(2,2,2,2)
    PCY601C = hxtmpt.BlankClip(color=$FFFFFF).Subtitle("YUV pc601",Align=5).LetterBox(2,2,2,2)  # Added
    PCY709C = hxtmpt.BlankClip(color=$FFFFFF).Subtitle("YUV pc709",Align=5).LetterBox(2,2,2,2)  # Added
    C       = StackHorizontal(NC,RGBC,Y601C,Y709C,PCY601C,PCY709C)  # Added PC clips
    GScript("""
        for(i=0,records-1) {
            RGB     = RT_DBaseGetField(DB,i,0)
            YUV601  = RT_DBaseGetField(DB,i,1)
            YUV709  = RT_DBaseGetField(DB,i,2)
            PCYUV601= RT_DBaseGetField(DB,i,3)      # Inserted field
            PCYUV709= RT_DBaseGetField(DB,i,4)      # Inserted field            
            Name    = RT_DBaseGetField(DB,i,5)      # Move from field 3 to field 5
            NC     = nmtmpt.BlankClip(color=RGB).Subtitle(Name,Align=5).LetterBox(2,2,2,2)
            RGBC   = hxtmpt.BlankClip(color=$FFFFFF).Subtitle(RT_String("$%0.6X",RGB),Align=5).LetterBox(2,2,2,2)
            Y601C  = hxtmpt.BlankClip(color=$FFFFFF).Subtitle(RT_String("$%0.6X",YUV601),Align=5).LetterBox(2,2,2,2)
            Y709C  = hxtmpt.BlankClip(color=$FFFFFF).Subtitle(RT_String("$%0.6X",YUV709),Align=5).LetterBox(2,2,2,2)
            PCY601C= hxtmpt.BlankClip(color=$FFFFFF).Subtitle(RT_String("$%0.6X",PCYUV601),Align=5).LetterBox(2,2,2,2) # Added
            PCY709C= hxtmpt.BlankClip(color=$FFFFFF).Subtitle(RT_String("$%0.6X",PCYUV709),Align=5).LetterBox(2,2,2,2) # Added
            TMPC   = StackHorizontal(NC,RGBC,Y601C,Y709C,PCY601C,PCY709C) # Added PC clips
            C=StackVertical(C,TMPC)                          
        }
    """)        
    Return C
}
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???
StainlessS is offline   Reply With Quote
Old 5th October 2015, 23:23   #20  |  Link
Reel.Deel
Registered User
 
Join Date: Mar 2012
Location: Texas
Posts: 1,664
Quote:
Originally Posted by StainlessS View Post
Try this (not much testing, but think should be ok).
Have commented where made changes. You just needed to add two more 'i' fields to RT_DBaseAlloc() so s field moved to field 5.
Thanks StainlessS! I was close but missed adding the 'i' fileds. One more thing I wanted to ask, is there an easy way to keep the color name row be stationary? Eventually I want to make a gif out of this and add to the the wiki.


#Edit: some colors look similar due to the gif color limitations but overall looks nice


Last edited by Reel.Deel; 6th October 2015 at 00:00. Reason: add gif
Reel.Deel is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 00:10.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.