Line | Branch | Exec | Source |
---|---|---|---|
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 | 2672 | static void FUNC(flac_decorrelate_indep_c)(uint8_t **out, int32_t **in, | |
52 | int channels, int len, int shift) | ||
53 | { | ||
54 | 2672 | sample *samples = (sample *) OUT(out); | |
55 | int i, j; | ||
56 | |||
57 |
2/2✓ Branch 0 taken 8683515 times.
✓ Branch 1 taken 1336 times.
|
17369702 | for (j = 0; j < len; j++) |
58 |
2/2✓ Branch 0 taken 23192498 times.
✓ Branch 1 taken 8683515 times.
|
63752026 | for (i = 0; i < channels; i++) |
59 | 46384996 | S(samples, i, j) = (int)((unsigned)in[i][j] << shift); | |
60 | 2672 | } | |
61 | |||
62 | 1610 | static void FUNC(flac_decorrelate_ls_c)(uint8_t **out, int32_t **in, | |
63 | int channels, int len, int shift) | ||
64 | { | ||
65 | 1610 | sample *samples = (sample *) OUT(out); | |
66 | int i; | ||
67 | |||
68 |
2/2✓ Branch 0 taken 2512470 times.
✓ Branch 1 taken 805 times.
|
5026550 | for (i = 0; i < len; i++) { |
69 | 5024940 | unsigned a = in[0][i]; | |
70 | 5024940 | unsigned b = in[1][i]; | |
71 | 5024940 | S(samples, 0, i) = a << shift; | |
72 | 5024940 | S(samples, 1, i) = (a - b) << shift; | |
73 | } | ||
74 | 1610 | } | |
75 | |||
76 | 1110 | static void FUNC(flac_decorrelate_rs_c)(uint8_t **out, int32_t **in, | |
77 | int channels, int len, int shift) | ||
78 | { | ||
79 | 1110 | sample *samples = (sample *) OUT(out); | |
80 | int i; | ||
81 | |||
82 |
2/2✓ Branch 0 taken 2134534 times.
✓ Branch 1 taken 555 times.
|
4270178 | for (i = 0; i < len; i++) { |
83 | 4269068 | unsigned a = in[0][i]; | |
84 | 4269068 | unsigned b = in[1][i]; | |
85 | 4269068 | S(samples, 0, i) = (a + b) << shift; | |
86 | 4269068 | S(samples, 1, i) = b << shift; | |
87 | } | ||
88 | 1110 | } | |
89 | |||
90 | 1472 | static void FUNC(flac_decorrelate_ms_c)(uint8_t **out, int32_t **in, | |
91 | int channels, int len, int shift) | ||
92 | { | ||
93 | 1472 | sample *samples = (sample *) OUT(out); | |
94 | int i; | ||
95 | |||
96 |
2/2✓ Branch 0 taken 3109507 times.
✓ Branch 1 taken 736 times.
|
6220486 | for (i = 0; i < len; i++) { |
97 | 6219014 | unsigned a = in[0][i]; | |
98 | 6219014 | int b = in[1][i]; | |
99 | 6219014 | a -= b >> 1; | |
100 | 6219014 | S(samples, 0, i) = (a + b) << shift; | |
101 | 6219014 | S(samples, 1, i) = a << shift; | |
102 | } | ||
103 | 1472 | } | |
104 |