Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Copyright © 2013 Intel Corporation
  3.  *
  4.  * Permission is hereby granted, free of charge, to any person obtaining a
  5.  * copy of this software and associated documentation files (the "Software"),
  6.  * to deal in the Software without restriction, including without limitation
  7.  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  8.  * and/or sell copies of the Software, and to permit persons to whom the
  9.  * Software is furnished to do so, subject to the following conditions:
  10.  *
  11.  * The above copyright notice and this permission notice (including the next
  12.  * paragraph) shall be included in all copies or substantial portions of the
  13.  * Software.
  14.  *
  15.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16.  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  18.  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19.  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  20.  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
  21.  * IN THE SOFTWARE.
  22.  *
  23.  * Authors:
  24.  *    Haihao Xiang <haihao.xiang@intel.com>
  25.  *
  26.  */
  27.  
  28. define(`Cr',                    `src_sample_b')
  29. define(`Cr_01',                 `src_sample_b_01')
  30. define(`Cr_23',                 `src_sample_b_23')
  31.  
  32. define(`Y',                     `src_sample_r')
  33. define(`Y_01',                  `src_sample_r_01')
  34. define(`Y_23',                  `src_sample_r_23')
  35.  
  36. define(`Cb',                    `src_sample_g')
  37. define(`Cb_01',                 `src_sample_g_01')
  38. define(`Cb_23',                 `src_sample_g_23')
  39.  
  40. define(`Crn',                   `color_balance_g')
  41. define(`Crn_01',                `color_balance_g_01')
  42. define(`Crn_23',                `color_balance_g_23')
  43.  
  44. define(`Yn',                    `color_balance_r')
  45. define(`Yn_01',                 `color_balance_r_01')
  46. define(`Yn_23',                 `color_balance_r_23')
  47.  
  48. define(`Cbn',                   `color_balance_b')
  49. define(`Cbn_01',                `color_balance_b_01')
  50. define(`Cbn_23',                `color_balance_b_23')
  51.  
  52. cmp.e.f0.0 (1) null skip_color_balance 0x1uw {align1};
  53. (f0.0) jmpi _DONE_COLOR_BALANCE;
  54.  
  55. /* Yout = (Yin - 16 / 255) * contrast + brightness + 16 / 255 */
  56. add (16)    Yn<1>F      Y<8,8,1>F       -0.0627451F     { compr align1 };
  57. mul (16)    Yn<1>F      Yn<8,8,1>F      contrast        { compr align1 };
  58. add (16)    Yn<1>F      Yn<8,8,1>F      brightness      { compr align1 };
  59. add (16)    Y<1>F       Yn<8,8,1>F      0.0627451F      { compr align1 };
  60.  
  61. /* Uout = (Uin - 128 / 255) * cos_c_s + (Vin - 128 / 255) * sin_c_s + 128 / 255 */
  62. /* Vout = (Vin - 128 / 255) * cos_c_s - (Uin - 128 / 255) * sin_c_s + 128 / 255 */
  63. add (16)    Cbn<1>F     Cb<8,8,1>F      -0.501961F      { compr align1 };
  64. add (16)    Crn<1>F     Cr<8,8,1>F      -0.501961F      { compr align1 };
  65.  
  66. mov (16)    acc0<1>F    0.501961F                       { compr align1 };
  67. mac (16)    acc0<1>F    Crn<8,8,1>F     sin_c_s         { compr align1 };
  68. mac (16)    Cb<1>F      Cbn<8,8,1>F     cos_c_s         { compr align1 };
  69.  
  70. mul (1)     sin_c_s_t<1>F       sin_c_s         -1.0F   { align1};
  71. mov (16)    acc0<1>F            0.501961F               { compr align1 };
  72. mac (16)    acc0<1>F            Cbn<8,8,1>F     sin_c_s { compr align1 };
  73. mac (16)    Cr<1>F              Crn<8,8,1>F     cos_c_s { compr align1 };
  74.  
  75. _DONE_COLOR_BALANCE:
  76.