Changeset 4699


Ignore:
Timestamp:
Oct 19, 2010, 6:33:10 PM (9 years ago)
Author:
Sam Hocevar
Message:

Clamp Y to 16 - 235, as the MPEG standard uses.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libpipi/trunk/pipi/filter/yuv.c

    r4697 r4699  
    3232    pipi_pixels_t *srcp, *dstp;
    3333    float *srcdata, *dstdata;
    34     int x, y, w, h, gray;
     34    int x, y, w, h;
    3535
    3636    w = src->w;
     
    5757
    5858            yp = 0.299 * r + 0.587 * g + 0.114 * b;
     59            yp = (yp * 220.0 + 16.0) / 255.0;
     60
    5961            u = 0.5 - 0.14713 * r - 0.28886 * g + 0.436 * b;
    6062            if (u < 0.0) u = 0.0;
    6163            if (u > 1.0) u = 1.0;
     64
    6265            v = 0.5 + 0.615 * r - 0.51499 * g - 0.10001 * b;
    6366            if (v < 0.0) v = 0.0;
    6467            if (v > 1.0) v = 1.0;
    6568
    66             dstdata[d] = v;
    67             dstdata[d + 1] = yp;
    68             dstdata[d + 2] = u;
     69            dstdata[d] = yp;
     70            dstdata[d + 1] = u;
     71            dstdata[d + 2] = v;
    6972            dstdata[d + 3] = a;
    7073        }
     
    7982    pipi_pixels_t *srcp, *dstp;
    8083    float *srcdata, *dstdata;
    81     int x, y, w, h, gray;
     84    int x, y, w, h;
    8285
    8386    w = src->w;
     
    98101            int d = 4 * (y * w + x);
    99102
    100             v = srcdata[d] - 0.5;
    101             yp = srcdata[d + 1];
    102             u = srcdata[d + 2] - 0.5;
     103            yp = (srcdata[d] * 255.0 - 16.0) / 220.0;
     104            u = srcdata[d + 1] - 0.5;
     105            v = srcdata[d + 2] - 0.5;
    103106            a = srcdata[d + 3];
    104107
Note: See TracChangeset for help on using the changeset viewer.