[FFmpeg-user] How chrRangeToJpeg_c() works?

Andrew Randrianasulu randrianasulu at gmail.com
Mon Sep 9 18:06:23 EEST 2024


Looking at libswscale/swscale.c (due to
https://trac.ffmpeg.org/ticket/11182#comment:5) I do not understand
how it works :)

why shits to 11 and to 12 ?

// FIXME all pal and rgb srcFormats could do this conversion as well
// FIXME all scalers more complex than bilinear could do half of this transform
static void chrRangeToJpeg_c(int16_t *dstU, int16_t *dstV, int width)
{
    int i;
    for (i = 0; i < width; i++) {
        dstU[i] = (FFMIN(dstU[i], 30775) * 4663 - 9289992) >> 12; // -264
        dstV[i] = (FFMIN(dstV[i], 30775) * 4663 - 9289992) >> 12; // -264
    }
}

static void chrRangeFromJpeg_c(int16_t *dstU, int16_t *dstV, int width)
{
    int i;
    for (i = 0; i < width; i++) {
        dstU[i] = (dstU[i] * 1799 + 4081085) >> 11; // 1469
        dstV[i] = (dstV[i] * 1799 + 4081085) >> 11; // 1469
    }
}

===
can anyone knowledgeable  write/add some more comments in code ? please :)


More information about the ffmpeg-user mailing list