[svn] / trunk / xvidcore / src / image / colorspace.c Repository:
ViewVC logotype

Diff of /trunk/xvidcore/src/image/colorspace.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1856, Mon Mar 30 14:40:05 2009 UTC revision 1857, Wed May 13 09:39:20 2009 UTC
# Line 19  Line 19 
19   *  along with this program ; if not, write to the Free Software   *  along with this program ; if not, write to the Free Software
20   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
21   *   *
22   * $Id: colorspace.c,v 1.14 2006-11-10 18:58:39 chl Exp $   * $Id: colorspace.c,v 1.15 2009-05-13 09:39:20 Isibaar Exp $
23   *   *
24   ****************************************************************************/   ****************************************************************************/
25    
# Line 152  Line 152 
152  #define V_B_IN                  0.071  #define V_B_IN                  0.071
153  #define V_ADD_IN                128  #define V_ADD_IN                128
154    
155  #define SCALEBITS_IN    8  #define SCALEBITS_IN            13
156  #define FIX_IN(x)               ((uint16_t) ((x) * (1L<<SCALEBITS_IN) + 0.5))  #define FIX_IN(x)               ((uint16_t) ((x) * (1L<<SCALEBITS_IN) + 0.5))
157    #define FIX_ROUND               (1L<<(SCALEBITS_IN-1))
158    
159  /* rgb16/rgb16i input */  /* rgb16/rgb16i input */
160    
# Line 174  Line 174 
174          r##UVID += r = C1##_R(rgb);                             \          r##UVID += r = C1##_R(rgb);                             \
175          y_ptr[(ROW)*y_stride+0] =                               \          y_ptr[(ROW)*y_stride+0] =                               \
176                  (uint8_t) ((FIX_IN(Y_R_IN) * r + FIX_IN(Y_G_IN) * g +   \                  (uint8_t) ((FIX_IN(Y_R_IN) * r + FIX_IN(Y_G_IN) * g +   \
177                                          FIX_IN(Y_B_IN) * b) >> SCALEBITS_IN) + Y_ADD_IN;        \                                          FIX_IN(Y_B_IN) * b + FIX_ROUND) >> SCALEBITS_IN) + Y_ADD_IN;    \
178          rgb = *(uint16_t *) (x_ptr + ((ROW)*x_stride) + 2);     \          rgb = *(uint16_t *) (x_ptr + ((ROW)*x_stride) + 2);     \
179          b##UVID += b = C1##_B(rgb);                             \          b##UVID += b = C1##_B(rgb);                             \
180          g##UVID += g = C1##_G(rgb);                             \          g##UVID += g = C1##_G(rgb);                             \
181          r##UVID += r = C1##_R(rgb);                             \          r##UVID += r = C1##_R(rgb);                             \
182          y_ptr[(ROW)*y_stride+1] =                               \          y_ptr[(ROW)*y_stride+1] =                               \
183                  (uint8_t) ((FIX_IN(Y_R_IN) * r + FIX_IN(Y_G_IN) * g +                   \                  (uint8_t) ((FIX_IN(Y_R_IN) * r + FIX_IN(Y_G_IN) * g +                   \
184                                          FIX_IN(Y_B_IN) * b) >> SCALEBITS_IN) + Y_ADD_IN;                                          FIX_IN(Y_B_IN) * b + FIX_ROUND) >> SCALEBITS_IN) + Y_ADD_IN;
185    
186  #define READ_RGB16_UV(UV_ROW,UVID)      \  #define READ_RGB16_UV(UV_ROW,UVID)      \
187          u_ptr[(UV_ROW)*uv_stride] =                                                                                                             \          u_ptr[(UV_ROW)*uv_stride] =                                                                                                             \
188                  (uint8_t) ((-FIX_IN(U_R_IN) * r##UVID - FIX_IN(U_G_IN) * g##UVID +                      \                  (uint8_t) ((-FIX_IN(U_R_IN) * r##UVID - FIX_IN(U_G_IN) * g##UVID +                      \
189                                          FIX_IN(U_B_IN) * b##UVID) >> (SCALEBITS_IN + 2)) + U_ADD_IN;    \                                          FIX_IN(U_B_IN) * b##UVID + 4*FIX_ROUND) >> (SCALEBITS_IN + 2)) + U_ADD_IN;      \
190          v_ptr[(UV_ROW)*uv_stride] =                                                                                                             \          v_ptr[(UV_ROW)*uv_stride] =                                                                                                             \
191                  (uint8_t) ((FIX_IN(V_R_IN) * r##UVID - FIX_IN(V_G_IN) * g##UVID -                       \                  (uint8_t) ((FIX_IN(V_R_IN) * r##UVID - FIX_IN(V_G_IN) * g##UVID -                       \
192                                          FIX_IN(V_B_IN) * b##UVID) >> (SCALEBITS_IN + 2)) + V_ADD_IN;                                          FIX_IN(V_B_IN) * b##UVID + 4*FIX_ROUND) >> (SCALEBITS_IN + 2)) + V_ADD_IN;
193    
194  #define RGB16_TO_YV12_ROW(SIZE,C1,C2,C3,C4) \  #define RGB16_TO_YV12_ROW(SIZE,C1,C2,C3,C4) \
195          /* nothing */          /* nothing */
# Line 222  Line 222 
222          b##UVID += b = x_ptr[(ROW)*x_stride+(C3)];                                              \          b##UVID += b = x_ptr[(ROW)*x_stride+(C3)];                                              \
223          y_ptr[(ROW)*y_stride+0] =                                                                       \          y_ptr[(ROW)*y_stride+0] =                                                                       \
224                  (uint8_t) ((FIX_IN(Y_R_IN) * r + FIX_IN(Y_G_IN) * g +   \                  (uint8_t) ((FIX_IN(Y_R_IN) * r + FIX_IN(Y_G_IN) * g +   \
225                                          FIX_IN(Y_B_IN) * b) >> SCALEBITS_IN) + Y_ADD_IN;        \                                          FIX_IN(Y_B_IN) * b + FIX_ROUND) >> SCALEBITS_IN) + Y_ADD_IN;    \
226          r##UVID += r = x_ptr[(ROW)*x_stride+(SIZE)+(C1)];                               \          r##UVID += r = x_ptr[(ROW)*x_stride+(SIZE)+(C1)];                               \
227          g##UVID += g = x_ptr[(ROW)*x_stride+(SIZE)+(C2)];                               \          g##UVID += g = x_ptr[(ROW)*x_stride+(SIZE)+(C2)];                               \
228          b##UVID += b = x_ptr[(ROW)*x_stride+(SIZE)+(C3)];                               \          b##UVID += b = x_ptr[(ROW)*x_stride+(SIZE)+(C3)];                               \
229          y_ptr[(ROW)*y_stride+1] =                                                                       \          y_ptr[(ROW)*y_stride+1] =                                                                       \
230                  (uint8_t) ((FIX_IN(Y_R_IN) * r + FIX_IN(Y_G_IN) * g +   \                  (uint8_t) ((FIX_IN(Y_R_IN) * r + FIX_IN(Y_G_IN) * g +   \
231                                          FIX_IN(Y_B_IN) * b) >> SCALEBITS_IN) + Y_ADD_IN;                                          FIX_IN(Y_B_IN) * b + FIX_ROUND) >> SCALEBITS_IN) + Y_ADD_IN;
232    
233  #define READ_RGB_UV(UV_ROW,UVID)        \  #define READ_RGB_UV(UV_ROW,UVID)        \
234          u_ptr[(UV_ROW)*uv_stride] =                                                                                                             \          u_ptr[(UV_ROW)*uv_stride] =                                                                                                             \
235                  (uint8_t) ((-FIX_IN(U_R_IN) * r##UVID - FIX_IN(U_G_IN) * g##UVID +                      \                  (uint8_t) ((-FIX_IN(U_R_IN) * r##UVID - FIX_IN(U_G_IN) * g##UVID +                      \
236                                          FIX_IN(U_B_IN) * b##UVID) >> (SCALEBITS_IN + 2)) + U_ADD_IN;    \                                          FIX_IN(U_B_IN) * b##UVID + 4*FIX_ROUND) >> (SCALEBITS_IN + 2)) + U_ADD_IN;      \
237          v_ptr[(UV_ROW)*uv_stride] =                                                                                                             \          v_ptr[(UV_ROW)*uv_stride] =                                                                                                             \
238                  (uint8_t) ((FIX_IN(V_R_IN) * r##UVID - FIX_IN(V_G_IN) * g##UVID -                       \                  (uint8_t) ((FIX_IN(V_R_IN) * r##UVID - FIX_IN(V_G_IN) * g##UVID -                       \
239                                          FIX_IN(V_B_IN) * b##UVID) >> (SCALEBITS_IN + 2)) + V_ADD_IN;                                          FIX_IN(V_B_IN) * b##UVID + 4*FIX_ROUND) >> (SCALEBITS_IN + 2)) + V_ADD_IN;
240    
241    
242  #define RGB_TO_YV12_ROW(SIZE,C1,C2,C3,C4) \  #define RGB_TO_YV12_ROW(SIZE,C1,C2,C3,C4) \

Legend:
Removed from v.1856  
changed lines
  Added in v.1857

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4