tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

flacdsp_template.c (2893B)


      1 /*
      2 * Copyright (c) 2012 Mans Rullgard <mans@mansr.com>
      3 *
      4 * This file is part of FFmpeg.
      5 *
      6 * FFmpeg is free software; you can redistribute it and/or
      7 * modify it under the terms of the GNU Lesser General Public
      8 * License as published by the Free Software Foundation; either
      9 * version 2.1 of the License, or (at your option) any later version.
     10 *
     11 * FFmpeg is distributed in the hope that it will be useful,
     12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14 * Lesser General Public License for more details.
     15 *
     16 * You should have received a copy of the GNU Lesser General Public
     17 * License along with FFmpeg; if not, write to the Free Software
     18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
     19 */
     20 
     21 #include <stdint.h>
     22 #include "libavutil/macros.h"
     23 
     24 #undef FUNC
     25 #undef FSUF
     26 #undef sample
     27 #undef sample_type
     28 #undef OUT
     29 #undef S
     30 
     31 #if SAMPLE_SIZE == 32
     32 #   define sample_type  int32_t
     33 #else
     34 #   define sample_type  int16_t
     35 #endif
     36 
     37 #if PLANAR
     38 #   define FSUF   AV_JOIN(SAMPLE_SIZE, p)
     39 #   define sample sample_type *
     40 #   define OUT(n) n
     41 #   define S(s, c, i) (s[c][i])
     42 #else
     43 #   define FSUF   SAMPLE_SIZE
     44 #   define sample sample_type
     45 #   define OUT(n) n[0]
     46 #   define S(s, c, i) (*s++)
     47 #endif
     48 
     49 #define FUNC(n) AV_JOIN(n ## _, FSUF)
     50 
     51 static void FUNC(flac_decorrelate_indep_c)(uint8_t **out, int32_t **in,
     52                                           int channels, int len, int shift)
     53 {
     54    sample *samples = (sample *) OUT(out);
     55    int i, j;
     56 
     57    for (j = 0; j < len; j++)
     58        for (i = 0; i < channels; i++)
     59            S(samples, i, j) = (int)((unsigned)in[i][j] << shift);
     60 }
     61 
     62 static void FUNC(flac_decorrelate_ls_c)(uint8_t **out, int32_t **in,
     63                                        int channels, int len, int shift)
     64 {
     65    sample *samples = (sample *) OUT(out);
     66    int i;
     67 
     68    for (i = 0; i < len; i++) {
     69        unsigned a = in[0][i];
     70        unsigned b = in[1][i];
     71        S(samples, 0, i) =  a      << shift;
     72        S(samples, 1, i) = (a - b) << shift;
     73    }
     74 }
     75 
     76 static void FUNC(flac_decorrelate_rs_c)(uint8_t **out, int32_t **in,
     77                                        int channels, int len, int shift)
     78 {
     79    sample *samples = (sample *) OUT(out);
     80    int i;
     81 
     82    for (i = 0; i < len; i++) {
     83        unsigned a = in[0][i];
     84        unsigned b = in[1][i];
     85        S(samples, 0, i) = (a + b) << shift;
     86        S(samples, 1, i) =  b      << shift;
     87    }
     88 }
     89 
     90 static void FUNC(flac_decorrelate_ms_c)(uint8_t **out, int32_t **in,
     91                                        int channels, int len, int shift)
     92 {
     93    sample *samples = (sample *) OUT(out);
     94    int i;
     95 
     96    for (i = 0; i < len; i++) {
     97        unsigned a = in[0][i];
     98        int b = in[1][i];
     99        a -= b >> 1;
    100        S(samples, 0, i) = (a + b) << shift;
    101        S(samples, 1, i) =  a      << shift;
    102    }
    103 }