FFmpeg
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavcodec
flacdsp_template.c
Go to the documentation of this file.
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/avutil.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) = 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
int
a
= in[0][i];
70
int
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
int
a
= in[0][i];
84
int
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
int
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
}
Generated on Sat May 25 2013 03:58:33 for FFmpeg by
1.8.2