FFmpeg  4.0
takdsp.c
Go to the documentation of this file.
1 /*
2  * TAK decoder
3  * Copyright (c) 2015 Paul B Mahol
4  *
5  * This file is part of FFmpeg.
6  *
7  * FFmpeg is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * FFmpeg is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with FFmpeg; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21 
22 #include "libavutil/attributes.h"
23 #include "takdsp.h"
24 #include "config.h"
25 
26 static void decorrelate_ls(int32_t *p1, int32_t *p2, int length)
27 {
28  int i;
29 
30  for (i = 0; i < length; i++) {
31  int32_t a = p1[i];
32  int32_t b = p2[i];
33  p2[i] = a + b;
34  }
35 }
36 
37 static void decorrelate_sr(int32_t *p1, int32_t *p2, int length)
38 {
39  int i;
40 
41  for (i = 0; i < length; i++) {
42  int32_t a = p1[i];
43  int32_t b = p2[i];
44  p1[i] = b - a;
45  }
46 }
47 
48 static void decorrelate_sm(int32_t *p1, int32_t *p2, int length)
49 {
50  int i;
51 
52  for (i = 0; i < length; i++) {
53  int32_t a = p1[i];
54  int32_t b = p2[i];
55  a -= b >> 1;
56  p1[i] = a;
57  p2[i] = a + b;
58  }
59 }
60 
61 static void decorrelate_sf(int32_t *p1, int32_t *p2, int length, int dshift, int dfactor)
62 {
63  int i;
64 
65  for (i = 0; i < length; i++) {
66  int32_t a = p1[i];
67  int32_t b = p2[i];
68  b = dfactor * (b >> dshift) + 128 >> 8 << dshift;
69  p1[i] = b - a;
70  }
71 }
72 
74 {
79 
80  if (ARCH_X86)
82 }
av_cold void ff_takdsp_init(TAKDSPContext *c)
Definition: takdsp.c:73
void(* decorrelate_ls)(int32_t *p1, int32_t *p2, int length)
Definition: takdsp.h:25
const char * b
Definition: vf_curves.c:113
static void decorrelate_sr(int32_t *p1, int32_t *p2, int length)
Definition: takdsp.c:37
Macro definitions for various function/variable attributes.
#define av_cold
Definition: attributes.h:82
#define ARCH_X86
Definition: config.h:38
void(* decorrelate_sr)(int32_t *p1, int32_t *p2, int length)
Definition: takdsp.h:26
int32_t
static void decorrelate_ls(int32_t *p1, int32_t *p2, int length)
Definition: takdsp.c:26
void(* decorrelate_sf)(int32_t *p1, int32_t *p2, int length, int dshift, int dfactor)
Definition: takdsp.h:28
static void decorrelate_sf(int32_t *p1, int32_t *p2, int length, int dshift, int dfactor)
Definition: takdsp.c:61
static void decorrelate_sm(int32_t *p1, int32_t *p2, int length)
Definition: takdsp.c:48
void ff_takdsp_init_x86(TAKDSPContext *c)
Definition: takdsp_init.c:30
void(* decorrelate_sm)(int32_t *p1, int32_t *p2, int length)
Definition: takdsp.h:27
static double c[64]
const char int length
Definition: avisynth_c.h:768