title: How to retrieve RGB value for each color apart from one dimensional integer RGB array
body: <p>I am not too familiar with bit shifting so I have the following question.
  I use the function below (found elsewhere) to decode from YUV to an RGB int array.</p>
  
  <p>Now I want to adjust red or green or blue values to create some custom filter effect.
  I need to retrieve the R value, G value, and B value. Each value ranging from 0-255.
  After that I need to restore it in the rgb array at the specified index.
  So I need to retrieve each color from <code>rgb[i]</code> and than be able to store it again in <code>rgb[i]</code></p>
  
  <pre><code>void decodeYUV420SP(int[] rgb, byte[] yuv420sp, int width, int height) {
  final int frameSize = width * height;
  for (int j = 0, yp = 0; j &lt; height; j++) { 
   int uvp = frameSize + (j &gt;&gt; 1) * width, u = 0, v = 0;
   for (int i = 0; i &lt; width; i++, yp++) {
     int y = (0xff &amp; ((int) yuv420sp[yp])) - 16;
     if (y &lt; 0)
     y = 0;
     if ((i &amp; 1) == 0) {
     v = (0xff &amp; yuv420sp[uvp++]) - 128;
     u = (0xff &amp; yuv420sp[uvp++]) - 128;
      }
    int y1192 = 1192 * y;
    int r = (y1192 + 1634 * v);
    int g = (y1192 - 833 * v - 400 * u);
    int b = (y1192 + 2066 * u);
    if (r &lt; 0)
      r = 0;
    else if (r &gt; 262143)
      r = 262143;
    if (g &lt; 0) 
      g = 0;
    else if (g &gt; 262143)
      g = 262143;
    if (b &lt; 0)
      b = 0;
    else if (b &gt; 262143)
      b = 262143;
     rgb[yp] = 0xff000000 | ((r &lt;&lt; 6) &amp; 0xff0000) | ((g &gt;&gt; 2) &amp; 0xff00) | ((b &gt;&gt; 10) &amp; 0xff);
    }
  }
    }
  }
  </code></pre>