ycbcr2rgb

Syntax

int ycbcr2rgb(int y, int cb, int cr, int z)

Arguments

y
Red value
cb
Green value
cr
Blue value
z
Determines which value is returned. z=0 for red, z=1 for green, z=2 for blue

Return

Returns the red, gree or blue value from 0 to 255 depending on the value of z

Description

Lets you convert YCbCr values to RGB values.

Example

%ffp

ctl(0):"Y (Luminancy)",Range=(-255,255),val=0
ctl(1):"Cb (Chroma Blue)",Range=(-255,255),val=0
ctl(2):"Cr (Chroma Red)",Range=(-255,255),val=0

ForEveryTile:{

  int r,g,b,i,cb,cr;

  for (y = y_start; y < y_end; y++) {

    if (updateProgress(y,y_end)) abort();

    for (x = x_start; x < x_end; x++) {
				
      r = src(x,y,0);
      g = src(x,y,1);
      b = src(x,y,2);

      i  = rgb2ycbcr(r,g,b,0);
      cb = rgb2ycbcr(r,g,b,1); 
      cr = rgb2ycbcr(r,g,b,2); 

      // Do the adjustment
      i = i + ctl(0);
      cb = cb + ctl(1);
      cr = cr + ctl(2);

      pset( x, y, 0, ycbcr2rgb(i,cb,cr,0) );
      pset( x, y, 1, ycbcr2rgb(i,cb,cr,1) );
      pset( x, y, 2, ycbcr2rgb(i,cb,cr,2) );

    }
  }

  return true;
}

Also see

rgb2ycbcr