gl: optimize glcolorbalance by precomputing shader math

Precompute the rgb -> yuv conversion and color balance adjustment math
so that the shader does minimal work per pixel.

Merging these 15+ steps into 3 steps let us jump from choppy
360p video to smooth 720p video on our underpowered embedded system.

If we can remove the clamp() step inside the shader, or apply it after
rgba
conversion, there are more performance benefits to reap. But I am not
sure
what the side effects will be in that case.

Part-of: <gstreamer/gst-plugins-base!893>
36 jobs for !893 with optimize-glcolorbalance in 35 minutes and 5 seconds (queued for 6 seconds)
detached
Status Job ID Name Coverage
  Build Docker
passed #5188778
alpine amd64 manifest builder docker

00:00:13

passed #5188776
android docker

00:00:29

passed #5188775
cerbero fedora amd64 docker

00:00:13

passed #5188773
fedora amd64 docker

00:00:46

passed #5188779
gst-indent amd64 docker

00:00:13

 
  Preparation
passed #5188783
gst indent

00:00:08

passed #5188781
manifest

00:00:18

 
  Build
passed #5188800
gstreamer
build cerbero cross-android universal

00:11:06

passed #5188804
gst-ios-13.2
build cerbero cross-ios universal

00:18:10

passed #5188801
gstreamer
build cerbero cross win32

00:07:48

passed #5188802
gstreamer
build cerbero cross win64

00:07:42

passed #5188799
gstreamer
build cerbero fedora x86_64

00:07:51

passed #5188803
gst-macos-10.15
build cerbero macos x86_64

00:09:19

passed #5188805
1809 gstreamer-windows windows docker
build cerbero msvc x86_64

00:09:59

passed #5188789
build clang fedora x86_64

00:05:44

manual #5188796
1809 windows docker allowed to fail manual
build msys2
passed #5188784
build nodebug fedora x86_64

00:06:33

passed #5188786
build static fedora x86_64

00:04:10

passed #5188788
build static nodebug fedora x86_64

00:03:28

passed #5210802
1809 windows docker
build vs2017 amd64

00:07:14

passed #5209219
1809 windows docker
build vs2017 x86

00:06:51

failed #5188791
1809 windows docker
build vs2017 amd64

00:06:08

failed #5188793
1809 windows docker
build vs2017 x86

00:06:21

 
  Test
passed #5188806
gstreamer
check fedora

00:05:32

passed #5188807
gstreamer
integration testsuites fedora 1/4

00:16:24

passed #5188808
gstreamer
integration testsuites fedora 2/4

00:13:50

passed #5188809
gstreamer
integration testsuites fedora 3/4

00:12:44

passed #5188810
gstreamer
integration testsuites fedora 4/4

00:19:30

passed #5188814
gstreamer
valgrind bad

00:05:38

passed #5188811
gstreamer
valgrind base

00:07:00

passed #5188815
gstreamer
valgrind ges

00:06:16

passed #5188812
gstreamer
valgrind good

00:08:29

passed #5188813
gstreamer
valgrind ugly

00:03:53

 
  Integrate
passed #5188816
cross-android universal examples

00:06:53

passed #5188818
gst-ios-13.2
cross-ios universal examples

00:01:33

passed #5188817
documentation

00:14:34