~ubuntu-branches/ubuntu/trusty/libav/trusty

« back to all changes in this revision

Viewing changes to libswscale/yuv2rgb.c

  • Committer: Bazaar Package Importer
  • Author(s): Reinhard Tartler
  • Date: 2011-04-19 15:04:55 UTC
  • mfrom: (1.2.1 upstream)
  • mto: (1.3.4 sid)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20110419150455-c1nac6gjm3t2aa4n
Tags: 4:0.7~b1-1
* New upstream version
* bump SONAME and SHLIBS
* configure flags --disable-stripping was removed upstream
* the MAINTAINERS file was removed upstream
* remove patch disable-configuration-warning.patch
* drop avfilter confflags, it is enable by default in 0.7
* libfaad wrapper has been removed upstream
* also update the *contents* of the lintian overrides

Show diffs side-by-side

added added

removed removed

Lines of Context:
6
6
 * 1,4,8bpp support and context / deglobalize stuff
7
7
 * by Michael Niedermayer (michaelni@gmx.at)
8
8
 *
9
 
 * This file is part of FFmpeg.
 
9
 * This file is part of Libav.
10
10
 *
11
 
 * FFmpeg is free software; you can redistribute it and/or
 
11
 * Libav is free software; you can redistribute it and/or
12
12
 * modify it under the terms of the GNU Lesser General Public
13
13
 * License as published by the Free Software Foundation; either
14
14
 * version 2.1 of the License, or (at your option) any later version.
15
15
 *
16
 
 * FFmpeg is distributed in the hope that it will be useful,
 
16
 * Libav is distributed in the hope that it will be useful,
17
17
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
18
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19
19
 * Lesser General Public License for more details.
20
20
 *
21
21
 * You should have received a copy of the GNU Lesser General Public
22
 
 * License along with FFmpeg; if not, write to the Free Software
 
22
 * License along with Libav; if not, write to the Free Software
23
23
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24
24
 */
25
25
 
595
595
    return NULL;
596
596
}
597
597
 
598
 
static void fill_table(uint8_t* table[256], const int elemsize, const int inc, uint8_t *y_table)
 
598
static void fill_table(uint8_t* table[256], const int elemsize, const int inc, void *y_tab)
599
599
{
600
600
    int i;
601
601
    int64_t cb = 0;
 
602
    uint8_t *y_table = y_tab;
602
603
 
603
604
    y_table -= elemsize * (inc >> 9);
604
605
 
620
621
    }
621
622
}
622
623
 
 
624
static uint16_t roundToInt16(int64_t f)
 
625
{
 
626
    int r= (f + (1<<15))>>16;
 
627
         if (r<-0x7FFF) return 0x8000;
 
628
    else if (r> 0x7FFF) return 0x7FFF;
 
629
    else                return r;
 
630
}
 
631
 
623
632
av_cold int ff_yuv2rgb_c_init_tables(SwsContext *c, const int inv_table[4], int fullRange,
624
633
                                     int brightness, int contrast, int saturation)
625
634
{
675
684
    cgv = (cgv*contrast * saturation) >> 32;
676
685
    oy -= 256*brightness;
677
686
 
 
687
    c->uOffset=   0x0400040004000400LL;
 
688
    c->vOffset=   0x0400040004000400LL;
 
689
    c->yCoeff=    roundToInt16(cy *8192) * 0x0001000100010001ULL;
 
690
    c->vrCoeff=   roundToInt16(crv*8192) * 0x0001000100010001ULL;
 
691
    c->ubCoeff=   roundToInt16(cbu*8192) * 0x0001000100010001ULL;
 
692
    c->vgCoeff=   roundToInt16(cgv*8192) * 0x0001000100010001ULL;
 
693
    c->ugCoeff=   roundToInt16(cgu*8192) * 0x0001000100010001ULL;
 
694
    c->yOffset=   roundToInt16(oy *   8) * 0x0001000100010001ULL;
 
695
 
 
696
    c->yuv2rgb_y_coeff  = (int16_t)roundToInt16(cy <<13);
 
697
    c->yuv2rgb_y_offset = (int16_t)roundToInt16(oy << 9);
 
698
    c->yuv2rgb_v2r_coeff= (int16_t)roundToInt16(crv<<13);
 
699
    c->yuv2rgb_v2g_coeff= (int16_t)roundToInt16(cgv<<13);
 
700
    c->yuv2rgb_u2g_coeff= (int16_t)roundToInt16(cgu<<13);
 
701
    c->yuv2rgb_u2b_coeff= (int16_t)roundToInt16(cbu<<13);
 
702
 
678
703
    //scale coefficients by cy
679
704
    crv = ((crv << 16) + 0x8000) / cy;
680
705
    cbu = ((cbu << 16) + 0x8000) / cy;
750
775
        }
751
776
        if (isNotNe)
752
777
            for (i = 0; i < 1024*3; i++)
753
 
                y_table16[i] = bswap_16(y_table16[i]);
 
778
                y_table16[i] = av_bswap16(y_table16[i]);
754
779
        fill_table(c->table_rV, 2, crv, y_table16 + yoffs);
755
780
        fill_table(c->table_gU, 2, cgu, y_table16 + yoffs + 1024);
756
781
        fill_table(c->table_bU, 2, cbu, y_table16 + yoffs + 2048);
773
798
        }
774
799
        if(isNotNe)
775
800
            for (i = 0; i < 1024*3; i++)
776
 
                y_table16[i] = bswap_16(y_table16[i]);
 
801
                y_table16[i] = av_bswap16(y_table16[i]);
777
802
        fill_table(c->table_rV, 2, crv, y_table16 + yoffs);
778
803
        fill_table(c->table_gU, 2, cgu, y_table16 + yoffs + 1024);
779
804
        fill_table(c->table_bU, 2, cbu, y_table16 + yoffs + 2048);