Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
558aa6ca
Commit
558aa6ca
authored
Jan 10, 2013
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
swr: add seperate in/out pointers to the noise shaping code
Signed-off-by:
Michael Niedermayer
<
michaelni@gmx.at
>
parent
fca51256
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
13 additions
and
12 deletions
+13
-12
dither_template.c
libswresample/dither_template.c
+5
-4
swresample.c
libswresample/swresample.c
+4
-4
swresample_internal.h
libswresample/swresample_internal.h
+4
-4
No files found.
libswresample/dither_template.c
View file @
558aa6ca
...
...
@@ -23,7 +23,7 @@
ERROR
#endif
void
RENAME
(
swri_noise_shaping
)(
SwrContext
*
s
,
AudioData
*
srcs
,
AudioData
*
noises
,
int
count
){
void
RENAME
(
swri_noise_shaping
)(
SwrContext
*
s
,
AudioData
*
dsts
,
const
AudioData
*
srcs
,
AudioData
*
noises
,
int
count
){
int
i
,
j
,
pos
,
ch
;
int
taps
=
s
->
dither
.
ns_taps
;
float
S
=
s
->
dither
.
ns_scale
;
...
...
@@ -31,10 +31,11 @@ void RENAME(swri_noise_shaping)(SwrContext *s, AudioData *srcs, AudioData *noise
for
(
ch
=
0
;
ch
<
srcs
->
ch_count
;
ch
++
)
{
const
float
*
noise
=
((
const
float
*
)
noises
->
ch
[
ch
])
+
s
->
dither
.
noise_pos
;
DELEM
*
data
=
(
DELEM
*
)
srcs
->
ch
[
ch
];
const
DELEM
*
src
=
(
const
DELEM
*
)
srcs
->
ch
[
ch
];
DELEM
*
dst
=
(
DELEM
*
)
dsts
->
ch
[
ch
];
pos
=
s
->
dither
.
ns_pos
;
for
(
i
=
0
;
i
<
count
;
i
++
)
{
double
d1
,
d
=
data
[
i
]
*
S_1
;
double
d1
,
d
=
src
[
i
]
*
S_1
;
for
(
j
=
0
;
j
<
taps
;
j
++
)
d
-=
s
->
dither
.
ns_coeffs
[
j
]
*
s
->
dither
.
ns_errors
[
ch
][
pos
+
j
];
pos
=
pos
?
pos
-
1
:
pos
-
1
+
taps
;
...
...
@@ -42,7 +43,7 @@ void RENAME(swri_noise_shaping)(SwrContext *s, AudioData *srcs, AudioData *noise
s
->
dither
.
ns_errors
[
ch
][
pos
+
taps
]
=
s
->
dither
.
ns_errors
[
ch
][
pos
]
=
d1
-
d
;
d1
*=
S
;
CLIP
(
d1
);
d
ata
[
i
]
=
d1
;
d
st
[
i
]
=
d1
;
}
}
...
...
libswresample/swresample.c
View file @
558aa6ca
...
...
@@ -677,10 +677,10 @@ static int swr_convert_internal(struct SwrContext *s, AudioData *out, int out_co
}
}
else
{
switch
(
s
->
int_sample_fmt
)
{
case
AV_SAMPLE_FMT_S16P
:
swri_noise_shaping_int16
(
s
,
preout
,
&
s
->
dither
.
noise
,
out_count
);
break
;
case
AV_SAMPLE_FMT_S32P
:
swri_noise_shaping_int32
(
s
,
preout
,
&
s
->
dither
.
noise
,
out_count
);
break
;
case
AV_SAMPLE_FMT_FLTP
:
swri_noise_shaping_float
(
s
,
preout
,
&
s
->
dither
.
noise
,
out_count
);
break
;
case
AV_SAMPLE_FMT_DBLP
:
swri_noise_shaping_double
(
s
,
preout
,
&
s
->
dither
.
noise
,
out_count
);
break
;
case
AV_SAMPLE_FMT_S16P
:
swri_noise_shaping_int16
(
s
,
preout
,
preout
,
&
s
->
dither
.
noise
,
out_count
);
break
;
case
AV_SAMPLE_FMT_S32P
:
swri_noise_shaping_int32
(
s
,
preout
,
preout
,
&
s
->
dither
.
noise
,
out_count
);
break
;
case
AV_SAMPLE_FMT_FLTP
:
swri_noise_shaping_float
(
s
,
preout
,
preout
,
&
s
->
dither
.
noise
,
out_count
);
break
;
case
AV_SAMPLE_FMT_DBLP
:
swri_noise_shaping_double
(
s
,
preout
,
preout
,
&
s
->
dither
.
noise
,
out_count
);
break
;
}
}
s
->
dither
.
noise_pos
+=
out_count
;
...
...
libswresample/swresample_internal.h
View file @
558aa6ca
...
...
@@ -167,10 +167,10 @@ int swri_resample_int32(struct ResampleContext *c, int32_t *dst, const int32_t *
int
swri_resample_float
(
struct
ResampleContext
*
c
,
float
*
dst
,
const
float
*
src
,
int
*
consumed
,
int
src_size
,
int
dst_size
,
int
update_ctx
);
int
swri_resample_double
(
struct
ResampleContext
*
c
,
double
*
dst
,
const
double
*
src
,
int
*
consumed
,
int
src_size
,
int
dst_size
,
int
update_ctx
);
void
swri_noise_shaping_int16
(
SwrContext
*
s
,
AudioData
*
srcs
,
AudioData
*
noises
,
int
count
);
void
swri_noise_shaping_int32
(
SwrContext
*
s
,
AudioData
*
srcs
,
AudioData
*
noises
,
int
count
);
void
swri_noise_shaping_float
(
SwrContext
*
s
,
AudioData
*
srcs
,
AudioData
*
noises
,
int
count
);
void
swri_noise_shaping_double
(
SwrContext
*
s
,
AudioData
*
srcs
,
AudioData
*
noises
,
int
count
);
void
swri_noise_shaping_int16
(
SwrContext
*
s
,
AudioData
*
dsts
,
const
AudioData
*
srcs
,
AudioData
*
noises
,
int
count
);
void
swri_noise_shaping_int32
(
SwrContext
*
s
,
AudioData
*
dsts
,
const
AudioData
*
srcs
,
AudioData
*
noises
,
int
count
);
void
swri_noise_shaping_float
(
SwrContext
*
s
,
AudioData
*
dsts
,
const
AudioData
*
srcs
,
AudioData
*
noises
,
int
count
);
void
swri_noise_shaping_double
(
SwrContext
*
s
,
AudioData
*
dsts
,
const
AudioData
*
srcs
,
AudioData
*
noises
,
int
count
);
int
swri_rematrix_init
(
SwrContext
*
s
);
void
swri_rematrix_free
(
SwrContext
*
s
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment